Example #1
0
        static void Main(string[] args)
        {
            var q = new CustomQueue();

            // проверка в обычном режиме, в  одном потоке
            q.Push(3);
            q.Pop();


            // проверяем работу очереди при запуске операций в разных потоках

            // запускаем потоки операции pop, ожидающие события push
            for (int i = 0; i < 10; i++)
            {
                Thread popThread = new Thread(new ThreadStart(q.Pop));
                popThread.Start();
            }


            // запускаем потоки push, при вставке будет срабатывать ожидающая операция pop
            for (int i = 0; i < 10; i++)
            {
                Thread pushThread = new Thread(new ParameterizedThreadStart(q.Push));
                Thread.Sleep(1000);
                pushThread.Start(i);
            }

            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            string      line;
            CustomQueue customQueue = new CustomQueue();

            while (!string.IsNullOrEmpty(line = Console.ReadLine()))
            {
                customQueue.Enqueue(line);
                Console.WriteLine(customQueue.Peek());
                Console.WriteLine(customQueue.Dequeue());
                Console.WriteLine(customQueue.Peek());
            }
        }