private void BurstProducerManyConsumersTestImpl(IBoundedQueue <int> queue) { const int CONCLUDED_TIMEOUT = 10000; int capacity = queue.Capacity; var concluded = new ManualResetEvent(false); bool[] values = new bool[capacity]; ThreadStart producer = () => { Random random = new Random(); for (int v = 0; v < capacity; ++v) { queue.Put(v); } }; ThreadStart consumer = () => { int val = queue.Get(); if (CheckRange(0, capacity, val)) { values[val] = true; if (allTrue(values)) { concluded.Set(); } } }; for (int i = 0; i < capacity; ++i) { new Thread(consumer).Start(); } new Thread(producer).Start(); bool result = concluded.WaitOne(CONCLUDED_TIMEOUT); concluded.Close(); Assert.AreEqual(true, result); }