C# ConcurrentQueue与Queue+;锁
我必须实现一个消费者一个生产者的标准算法。我可以使用C# ConcurrentQueue与Queue+;锁,c#,C#,我必须实现一个消费者一个生产者的标准算法。我可以使用Queue和两个lock语句轻松地实现它。或者我可以使用ConcurrentQueue。什么更好 如果使用了Queue+lock,那么我可以优化“多次添加/检索”,因为我可以lock一次,然后Add多次 一般情况下,ConcurrentQueue或Queue+lock的速度更快,差异有多大?当然,ConcurrentQueue是最具前瞻性的方式,但我不想失去很多性能,因为我在HFT交易应用程序中使用它。来自: 实现了并发堆栈、队列和包类 在内部
Queue
和两个lock
语句轻松地实现它。或者我可以使用ConcurrentQueue
。什么更好
如果使用了Queue+lock
,那么我可以优化“多次添加/检索”,因为我可以lock
一次,然后Add
多次
一般情况下,ConcurrentQueue
或Queue+lock
的速度更快,差异有多大?当然,ConcurrentQueue
是最具前瞻性的方式,但我不想失去很多性能,因为我在HFT交易应用程序中使用它。来自:
实现了并发堆栈、队列和包类
在内部使用链接列表。这会降低它们的内存效率
比非当前的堆栈
和队列
类更好,但对于
并发访问,因为链表有助于解除锁定或
低锁实现
换句话说,很难定义一般情况,更不用说预测性能的差异
这取决于集合的大小和使用情况。如果有足够的并发访问,性能会更好,内存消耗会更差。首先,性能与CPU数量有关。在某些抽象模式下很难评估多线程应用程序的性能。在您的环境中进行测量怎么样?我可以给你数字,证明你想在我的机器上做什么。