public void SingleThread_Post_ConsumesAllItems(int count) { TestSingleConsumerTask task; using (task = new TestSingleConsumerTask()) { for (var i = 0; i < count; i++) { task.Post(i); } } task.Count.ShouldBe(count); }
public async Task MultipleThreads_Post_ConsumesAllItems(int count) { const int numberOfThreads = 7; TestSingleConsumerTask task; using (task = new TestSingleConsumerTask()) { var producers = Enumerable .Range(0, numberOfThreads) .Select(_ => Task.Run(() => { for (var i = 0; i < count; i++) { // ReSharper disable once AccessToDisposedClosure task.Post(i); } })) .ToArray(); await Task.WhenAll(producers); } task.Count.ShouldBe(numberOfThreads * count); }