Nic*_*las 4 c# multithreading .net-4.0 task-parallel-library
灵感来自我当前的问题,这与此类似:
Queling.Peek()的类似于BlockingCollection,当听取消费IEnumerable <T>与我当前的区别 - 我正在使用ConcurrentQueue<T>
而不是BlockingCollection<T>
,我想知道什么是用例对于ConcurrentQueue<T>.TryPeek()
可能?
当然,我的意思是没有手动lock(myQueue)
内容的用例来序列化队列访问,因为TPL旨在改进/替代这些锁定.
Jim*_*hel 10
我有一个ConcurrentQueue<T>.TryPeek
效果很好的应用程序.设置了一个线程来监视队列.它主要是关注队列大小,但我们也希望了解延迟.因为在队列中的项目有时间戳字段,说什么时候他们被放入队列,我的监视线程可以调用TryPeek
在队列的头部,以获得该项目,从当前时间减去插入时间,并告诉我该项目在队列中的时间长度.随着时间的推移和许多样本,这让我非常清楚地了解了收到的物品需要多长时间才能得到处理.
当我的监控代码仍在检查时,其他一些线程可能会将项目出列并不重要.
我可以想到一些其他场景,即使它可能立即被拉出,看看队列头部的内容是有用的.