Пример #1
0
        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);
            }
        }