Beispiel #1
0
        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);
 }