Exemple #1
0
        public void AddRandomly(LimitedQueue <int> myQ, CancellationTokenSource cancel, ref string addMsg)
        {
            int    addingNo = 0;
            Random r        = new Random();

            while (!cancel.IsCancellationRequested)
            {
                int element = r.Next() % 10;
                myQ.Enque(element);
                addingNo++;
                addMsg = $"the last adding was of {element} to {myQ}\n it was adding no' {addingNo}";
                Thread.Sleep(r.Next() % 1000);
            }
        }
        static void Main(string[] args)
        {
            LimitedQueue <int> queue = new LimitedQueue <int>(30);

            for (int i = 0; i < 40; i++)
            {
                var threadNumber = i;
                ThreadPool.QueueUserWorkItem(t =>
                {
                    Console.WriteLine($"Enque thread: {threadNumber}");
                    queue.Enque(threadNumber);
                    Thread.Sleep(500);
                    Console.WriteLine($"Deque thread: {queue.Deque()}");
                });
            }
        }
Exemple #3
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();
        }
Exemple #4
0
        public void TestingCode()
        {
            LimitedQueue <int> queue = new LimitedQueue <int>(10);

            for (int i = 1; i <= 20; i++)
            {
                var number = i;

                Task.Run(async() =>
                {
                    queue.Enque(number);
                    Console.WriteLine($"Added to queue: {number} .");

                    await Task.Delay(2000);
                    var dequeNumber = queue.Deque();
                    Console.WriteLine($"Removed from queue: {dequeNumber} .");
                });
            }
        }
Exemple #5
0
        static void Main(string[] args)
        {
            LimitedQueue <int> queue = new LimitedQueue <int>(2);

            for (int i = 0; i < 10; i++)
            {
                var tI = i;

                ThreadPool.QueueUserWorkItem(s =>
                {
                    Console.WriteLine($"Enque: {tI}");
                    queue.Enque(tI);
                    Thread.Sleep(1000);
                    Console.WriteLine($"Deque: {queue.Deque()}");
                });
            }

            Console.ReadKey();
        }
Exemple #6
0
        static void Main(string[] args)
        {
            LimitedQueue <int> limitedQueue = new LimitedQueue <int>(10);
            Random             random       = new Random();
            int currentRandNum;

            for (int i = 0; i < 10; i++)
            {
                currentRandNum = random.Next(1, 50);
                Console.WriteLine("Adding item");
                ThreadPool.QueueUserWorkItem(q => limitedQueue.Enque(currentRandNum));
                Thread.Sleep(500);
            }

            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Removing item");
                ThreadPool.QueueUserWorkItem(q => limitedQueue.Deque());
                Thread.Sleep(500);
            }
        }
Exemple #7
0
        public static void Main(string[] args)
        {
            LimitedQueue <int> testingQueue = new LimitedQueue <int>(5);

            for (int i = 0; i <= 21; i++)
            {
                Console.WriteLine($"Queue size is {testingQueue.Count}");
                Random rand     = new Random();
                int    currRand = rand.Next(1, 101);
                if (currRand % 3 != 0)
                {
                    Console.WriteLine("Start adding process");
                    ThreadPool.QueueUserWorkItem(q => testingQueue.Enque(i));
                }
                else
                {
                    Console.WriteLine("Start removing process");
                    ThreadPool.QueueUserWorkItem(q => testingQueue.Deque());
                }
                Thread.Sleep(1000);
            }
        }
Exemple #8
0
        static void Main(string[] args)
        {
            int maxSize = 10;
            LimitedQueue <int> queue = new LimitedQueue <int>(maxSize);

            for (int i = 0; i < 10; i++)
            {
                ThreadPool.QueueUserWorkItem((_) =>
                {
                    Console.WriteLine($"thread:{Thread.GetDomainID()}");
                    Random r = new Random();
                    for (int j = 0; j < 100; j++)
                    {
                        if (r.Next(4) > 1)
                        {
                            queue.Enque(r.Next(10));
                            Console.WriteLine("Enque"); //write operation
                        }
                        else
                        {
                            queue.Deque();
                            Console.WriteLine("Deque"); //write operation
                        }
                        Thread.Sleep(r.Next(200));
                        Console.WriteLine(queue.ToString()); //read operation

                        if (queue.Count > maxSize)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine($"ERROR!");
                        }
                        Console.WriteLine($"count:{queue.Count}");

                        ;
                    }
                });
            }
            Console.Read();
        }
Exemple #9
0
 public void AddToQueue(string id)
 {
     newLimitedQueue.Enque(id);
     Console.WriteLine("{0} item entered the queue", id);
 }