示例#1
0
        public void TestInline()
        {
            RingBuffer <int> ringBuffer = new Common.RingBuffer.RingBuffer <int>(bufferSize, () => index++, waitTime);

            var factory = new TaskFactory();

            List <Task> tasks = new List <Task>();

            for (int i = 0; i < runCount; i++)
            {
                using var accquisiton = ringBuffer.Accquire();
                System.Threading.Thread.Sleep(workTime);
            }
        }
示例#2
0
        public void TestMultiTasks()
        {
            RingBuffer <int> ringBuffer = new Common.RingBuffer.RingBuffer <int>(bufferSize, () => index++, waitTime);

            var factory = new TaskFactory();

            List <Task> tasks = new List <Task>();

            for (int i = 0; i < runCount; i++)
            {
                var task = factory.StartNew(() =>
                {
                    using var accquisiton = ringBuffer.Accquire();
                    System.Threading.Thread.Sleep(workTime);
                    //System.Diagnostics.Debug.WriteLine($"Item {x.Current} - processado!");
                });
                tasks.Add(task);
            }

            Task.WhenAll(tasks.ToArray()).GetAwaiter().GetResult();
        }
示例#3
0
        public void TestMultiThreadTest()
        {
            RingBuffer <int> ringBuffer = new Common.RingBuffer.RingBuffer <int>(bufferSize, () => index++, waitTime);

            List <Thread> threads = new List <Thread>();

            for (int i = 0; i < runCount; i++)
            {
                Thread thread = new Thread(() => {
                    using var bufferedItem = ringBuffer.Accquire();
                    System.Threading.Thread.Sleep(workTime);
                    System.Diagnostics.Debug.WriteLine($"Item {bufferedItem.Current} - processado!");
                });
                thread.Start();
                threads.Add(thread);
            }

            foreach (Thread thread in threads)
            {
                thread.Join();
            }
        }