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> /// PriorityQueueController constructor. /// </summary> /// <param name="frequency">producer frequency</param> protected PriorityQueueProducer(int frequency = default) : base(frequency) { _consumers = new HashSet <IQueueConsumer <T> >(); _queue = new ReaderWriterPriorityQueue <T>(); }