コード例 #1
0
ファイル: Test.cs プロジェクト: rihadavid/SerialQueue
        public void EnqueueFromMultipleThreads()
        {
            // Assign

            const int count = 10000;
            var       queue = new SerialQueue();
            var       list  = new List <int>();

            // Act

            var counter = 0;

            for (int i = 0; i < count; i++)
            {
                Task.Run(() => {
                    queue.EnqueueAction(() => list.Add(counter++));
                });
            }

            while (list.Count != count)
            {
            }
            ;

            // Assert

            Assert.True(list.SequenceEqual(Enumerable.Range(0, count)));
        }
コード例 #2
0
ファイル: Test.cs プロジェクト: rihadavid/SerialQueue
        public async Task QueueAction()
        {
            // Assign

            var queue = new SerialQueue();
            var list  = new List <int>();
            var tasks = new List <Task>();
            var range = Enumerable.Range(0, 10000);

            // Act

            foreach (var number in range)
            {
                tasks.Add(queue.EnqueueAction(() => list.Add(number)));
            }

            await Task.WhenAll(tasks);

            // Assert

            Assert.True(range.SequenceEqual(list));
        }