【发布时间】:2013-02-21 14:33:52
【问题描述】:
我正在使用以下工作流程处理项目:
第一部分:
- 事件异步到达并在阻塞队列中排队,我们称之为Q1
- 线程从该队列中获取下一个可用项目
- 项目最终并行运行 {N} 个任务
- 每个任务将其结果排入第二个队列,我们称之为Q2。
- 当项目处理完成时,从队列中读取下一个项目。
第二部分:
- 另一个线程一次读取 Q2 一个对象并处理结果
因此,这里的问题是,第一个队列中的每个项目最终都会并行运行大量任务,并且每个任务都将其结果排队。第二个队列必须按顺序处理,但一次一个项目,它会被淹没。
我的问题
我需要一种机制,使线程处理 Q1 等到 Q2 中的项目数低于特定阈值。实现这一目标的最佳方法是什么?有什么办法可以让事件驱动解决方案而不是轮询解决方案?
【问题讨论】:
标签: c# .net multithreading queue event-driven