Пример #1
0
        private static void EnqueueAndTryDequeue(ConcurrentLIFOQueue <int> queue)
        {
            int result;

            for (int i = 0; i < queue.Length; i++)
            {
                queue.Enqueue(i);
                queue.TryDequeue(out result);
            }
            Console.WriteLine("finish");
        }
Пример #2
0
        static void Main(string[] args)
        {
            var queue = new ConcurrentLIFOQueue <int>(10);

            for (int i = 0; i < 10; i++)
            {
                Task.Run(() => EnqueueAndTryDequeue(queue));
            }



            Task.Run(() => Dequeue(queue));
            Task.Run(() => Dequeue(queue));

            Thread.Sleep(3000);

            Console.ReadLine();
        }
Пример #3
0
        private static void Dequeue(ConcurrentLIFOQueue <int> queue)
        {
            bool result_bool = true;
            int  result;

            while (result_bool)
            {
                if (queue.Count() > 0)
                {
                    result_bool = queue.TryDequeue(out result);
                }
                else
                {
                    result_bool = false;
                }
            }

            Console.WriteLine("Done");
        }