【发布时间】:2015-06-12 13:18:54
【问题描述】:
希望有人可以就生产者/消费者模式提供一些建议——特别是关于如何最好地实现对所有生产者/消费者类实例通用的队列/BlockingCollection?
让我们简化场景;考虑一下我有;
- 单个生产者类
- 单个消费者类。
- 一项服务 包含生产者和消费者实例的类 班级。服务类只是告诉生产者/消费者开始 并停止工作。
生产者将填充 BlockingCollection
消费者需要从同一个 BlockingCollection 中读取数据
正如本文所演示的,这一切都很容易做到;
https://msdn.microsoft.com/en-us/library/dd287186.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
这个例子本质上是同一个类中的生产者和消费者,引用一个公共队列/阻塞集合当然是微不足道的,因为对对象的引用是同一个类中的一个私有成员。
如果我将生产者和消费者分成不同的类,那么这就提出了如何拥有一个通用的 BlockingCollection 的问题。
我是否应该将“服务类”设为静态/共享类,在此类中创建 BlockingCollection 并将其公开为朋友/公共成员?
common Queue应该放在哪里?
提前致谢!
【问题讨论】:
-
我建议有一个单独的类来封装阻塞集合,另一个控制器类将生产者、消费者和封装的阻塞集合连接在一起。
标签: c# .net vb.net producer-consumer blockingcollection