我必须实现一个消费者的一个生产者标准算法。我可以使用Queue
和几个lock
语句轻松实现它。或者我可以使用ConcurrentQueue
。什么更好?
如果使用Queue + lock
,那么我可以优化“多次添加/撤销”,因为我可以lock
一次,然后Add
多次。
一般情况下哪些更快 - ConcurrentQueue
或Queue + lock
以及差异有多大?当然ConcurrentQueue
是最直接的方式,但我不想放弃很多性能,因为我在HFT交易应用程序中使用它。
答案 0 :(得分:20)
实现并发堆栈,队列和包类 内部有链表。这使得它们的内存效率降低 比非并发
Stack
和Queue
类,但更好 并发访问,因为链接列表导致无锁或 低锁实现。
换句话说,很难定义一般情况,更不用说预测性能的差异。
取决于集合的大小和用法。如果足够的并发访问,性能可以更好,内存消耗会更差。