Esempio n. 1
0
        /// <summary>
        /// Kick start of a zip/unzip process
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="readerThread"></param>
        /// <param name="workers"></param>
        /// <param name="buffers"></param>
        static void StartConveyor(ArchReader reader, ThreadWorker readerThread, ThreadWorker[] workers, InOutBuffer[] buffers)
        {
            Debug.Assert(workers.Length == buffers.Length);

            for (int idx = 0; idx < workers.Length; idx++)
            {
                ThreadWorker worker = workers[idx];

                General.Log($"{idx} start reading");
                reader.Buffer = buffers[idx];
                readerThread.haveWork.Set();

                readerThread.notifyDone.WaitOne();
                General.Log($"{idx} reading chunk complete, start zippin");
                worker.haveWork.Set();
                worker.Start();
            }
        }