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))); }
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)); }