示例#1
0
        static void Main(string[] args)
        {
            LimitedQueue<int> queue = new LimitedQueue<int>(5);
            for (int i = 0; i < 20; i++)
            {
                int action = new Random().Next(0, 2);
                if (action == 0)
                {
                    var trd = new Thread((j) =>
                     {
                         try
                         {
                             Console.WriteLine($"{j}: Dequeued {queue.Dequeue()}");
                             Console.WriteLine($"{j}: {queue.Count()} ");
                         }
                         catch (InvalidOperationException ex)
                         {
                             Console.WriteLine($"{j}: queue is empty");
                         }

                     }
                        );
                    trd.Name = i.ToString();
                    trd.Start(i);
                }
                else
                {
                    int value = new Random().Next(0, 200);
                    var trd = new Thread((j) =>
                    {
                        Console.WriteLine($"{j}: Try to enqueue {value}");
                        queue.Enque(value);
                        Console.WriteLine($"{j}: Enqueued {value}");
                        Console.WriteLine($"{j}: {queue.Count()} ");


                    });
                    trd.Name = i.ToString();
                    trd.Start(i);

                }

            }
            Console.ReadLine();
        }