C# 通用.Net生产者/消费者

C# 通用.Net生产者/消费者,c#,.net,multithreading,producer-consumer,C#,.net,Multithreading,Producer Consumer,为了好玩,我想在C#中实现一个通用的生产者/消费者对+处理队列。其思想是,您只需创建实现适当的IProducer和IConsumer接口(提供的默认实现)的对象,这些接口主要由委托组成,将它们传递给QueueProcessor类实例,告诉它您需要多少消费者,然后执行 但我对自己说,“赛尔夫,这肯定是以前做过的。” 那么,有谁知道C#中生产者/消费者模式的一个好的、通用的实现(VB.Net也可以)?我正在寻找的基本要求: 对生成和使用的类型(输入、排队任务和输出类型,或其任意组合)使用泛型 允许

为了好玩,我想在C#中实现一个通用的生产者/消费者对+处理队列。其思想是,您只需创建实现适当的IProducer和IConsumer接口(提供的默认实现)的对象,这些接口主要由委托组成,将它们传递给
QueueProcessor
类实例,告诉它您需要多少消费者,然后执行

但我对自己说,“赛尔夫,这肯定是以前做过的。”

那么,有谁知道C#中生产者/消费者模式的一个好的、通用的实现(VB.Net也可以)?我正在寻找的基本要求:

  • 对生成和使用的类型(输入、排队任务和输出类型,或其任意组合)使用泛型
  • 允许您指定有多少消费者将在队列中工作
  • 允许您将多个队列链接或链接到一个管道中(我知道,对于多个消费者来说很棘手)
  • 允许您实现自己的生产者和消费者
  • 允许您将任何IEnumerable转换为生产者(如果我必须自己实现,则可以,只要有可能)
  • 基于委托(您可以使用lambda语法处理基本消费者或生产者工作的单个项目)
或者如果没有,是什么陷阱阻止了它,您对如何实现它有什么想法吗?

您看过吗?

包含了您需要的很多内容


这是一些代码示例和用法说明。

我在其中没有看到任何符合我要求的东西。更不用说,我没有看到一些对实现这一点非常有用的东西。因此,您将及时在impl中进行任何增强…:PIt并不是一个完美的框架,它缺少一些明显的功能,比如停止处理并等待剩余的任务。我们正在增强开发团队的框架,如果您需要更多帮助,请告诉我…您看过吗?是的,还有IProducerConsumerCollection,但在我第一次提出问题时,这些都还不存在。写一篇关于4.0支持度的帖子,我会给你一个简单的投票。啊!我不知道这是怎么发生的。。。我总是以2年前的帖子结尾:PHi Joel Coehoorn,请看看这个使用BlockingCollection的帖子。如果您打算构建自己的生产者-消费者框架,那么它对于构建生产者-消费者类可能很有用。