public void ReaderWriterPriorityQueueTest() { var producer = new ReaderWriterPriorityQueue <string>(); var resetEvent = new ManualResetEventSlim(false); var _ = Task.Factory.StartNew(() => { var item = producer.Dequeue(); Assert.Equal("This is a higher message", item); // ReSharper disable once AccessToDisposedClosure resetEvent.Set(); }); producer.Enqueue("This is a message"); producer.Enqueue("This is a higher message", 2); resetEvent.Wait(); resetEvent.Dispose(); }
/// <summary> /// Produce a queued item with priority. /// </summary> /// <param name="item"></param> /// <param name="priority"></param> public void Produce(T item, int priority) { _queue.Enqueue(item, priority); }