示例#1
0
文件: Turn.cs 项目: Alex2011War/GZIP
        public void EnqueueForWriting(ByteBlock block)
        {
            int id = block.ID;

            lock (locker)
            {
                if (_isDead)
                {
                    throw new InvalidOperationException("Очередь уже остановилась");
                }

                while (id != _blockId)
                {
                    Monitor.Wait(locker);
                }

                queue.Enqueue(block);
                _blockId++;
                Monitor.PulseAll(locker);
            }
        }