ConcurrentQueue与Queue + lock的性能

时间:2013-01-01 14:54:09

标签: c#

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

如果使用Queue + lock,那么我可以优化“多次添加/撤销”,因为我可以lock一次,然后Add多次。

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

1 个答案:

答案 0 :(得分:20)

来自C# in a Nutshell

  

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

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

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