.net 4.0并发队列字典

时间:2010-05-31 09:28:35

标签: c# .net-4.0 queue parallel-processing concurrency

我想在.NET 4.0中使用新的并发集合来解决以下问题。

我想要的基本数据结构是生产者消费者队列,将有一个消费者和多个生产者。

有一些类型为A,B,C,D,E的项目将被添加到此队列中。类型A,B,C的项目以正常方式添加到队列中并按顺序处理。

但是,D或E类型的项目只能存在于队列零或一次。如果要添加其中一个并且已经存在另一个尚未处理的相同类型,那么这应该更新队列中的其他一个就地。更新后,队列位置不会改变(即不会转到队列的后面)。

哪种.NET 4.0类最适合这个?

1 个答案:

答案 0 :(得分:3)

我认为.net 4中没有这样的(优先级)队列可以支持原子AddOrUpdate操作。只有ConcurrentDictionary支持这一点,但如果您需要保留订单,则不适合。

所以你的选择可能是使用两者的某种组合。

但是,请注意,一旦对它们进行组合操作,您将失去并发结构的安全性;你必须自己实现锁定机制(在这里查看这种情况的一个例子:A .Net4 Gem: The ConcurrentDictionary - Tips & Tricks)。

第二个选项是google进行第三方实施。

相关问题