.NET 4.0并发队列字典

3
我希望使用.NET 4.0中的新并发集合来解决以下问题。
我想要的基本数据结构是生产者消费者队列,其中只有一个消费者和多个生产者。
这个队列中将添加类型为A、B、C、D、E的项。类型为A、B、C的项按照正常方式添加到队列中并按顺序处理。
然而,类型为D或E的项只能在队列中存在零次或一次。如果要添加其中之一,并且已经存在另一个尚未处理的相同类型,则应该就地更新该项。更新后,队列位置不会改变(即不会移到队列的末尾)。
哪些.NET 4.0类最适合此任务?
1个回答

3
我认为在.NET 4中没有支持原子AddOrUpdate操作的这种(优先级)队列。唯一支持此操作的是ConcurrentDictionary,但如果您需要保留顺序,则它不适用。
因此,您的选择可能是使用两者的组合。
但请注意,只要您对它们进行了组合操作,就会失去并发结构的安全性;您必须自己实现锁定机制(在此处查看此类情况的示例:.Net4 Gem:ConcurrentDictionary -提示和技巧)。
第二个选项是搜索一些第三方实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接