【问题标题】:.net 4.0 concurrent queue dictionary.net 4.0 并发队列字典
【发布时间】:2010-05-31 09:28:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    第二种选择是通过谷歌搜索一些第 3 方的实现。

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 2020-09-10
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多