8

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

但我对自己说:“我自己,这肯定以前做过。”

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

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

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

4

3 回答 3

5

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

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

于 2009-06-02T22:35:32.000 回答
2

Marc Gravell 在这个答案中写了一个很好的例子阻塞队列。

于 2010-08-19T22:20:16.400 回答
0

你看过MiscUtil吗?

于 2009-05-27T17:03:39.470 回答