通用.Net生产者/消费者

时间:2009-05-27 16:54:37

标签: c# .net multithreading producer-consumer

我正在考虑在C#中实现通用生产者/消费者对+处理队列的想法。我们的想法是你可以创建实现适当的IProducer和IConsumer接口的对象(提供默认实现),它们主要由委托组成,将它们传递给QueueProcessor类实例,告诉它你想要多少个消费者,然后去

但我对自己说,“自我,这肯定已经做过了。”

所以有人知道C#中生产者/消费者模式的良好泛型实现(VB.Net也可以)吗?我正在寻找的基本要求:

  • 对生产和消费类型(输入,排队任务和输出类型或其任何组合)使用泛型
  • 允许您指定将有多少消费者使用该队列
  • 允许您将多个队列链接或链接到管道中(对于多个消费者来说很棘手,我知道)
  • 允许您实施自己的制作人和消费者
  • 允许您将任何IEnumerable转换为生产者(好吧,如果我必须自己实现,只要有可能)
  • 基于委托(您可以使用lambda语法为基本消费者或生产者工作处理单个项目)

或者如果没有,那么什么陷阱阻止了它,你对如何实现它有任何想法吗?

3 个答案:

答案 0 :(得分:5)

Microsoft CCR包含您需要的大部分内容。

Here是一些代码示例和使用说明。

答案 1 :(得分:2)

Marc Gravell在this answer中写了一个很好的阻塞队列示例。

答案 2 :(得分:0)

你看过MiscUtil吗?