ConcurrentQueue与Queue + lock的性能

jav*_*red 17 c#

我必须实现一个消费者的一个生产者标准算法.我可以轻松地使用Queue几个lock语句来实现它.或者我可以使用ConcurrentQueue.什么是更好的?

如果Queue + lock使用然后我可以优化"多次加/退",因为我可以lock一次又Add多次.

一般情况下更快 - ConcurrentQueue或者Queue + lock差异有多大?当然ConcurrentQueue是最直接的方式,但我不想放弃很多性能,因为我在HFT交易应用程序中使用它.

Rot*_*tem 21

来自Cuts in Nutshell:

并发堆栈,队列和包类在内部使用链接列表实现.这使得它们比非并发StackQueue类更低的内存效率,但更好地用于并发访问,因为链表有利于无锁或低锁实现.

换句话说,很难定义一般情况,更不用说预测性能的差异.

这取决于集合的大小和用法.如果足够的并发访问可以预期性能会更好,内存消耗会更差.