【发布时间】:2011-04-15 19:09:51
【问题描述】:
我正在启动一个小“作业管理器”,它将执行一些“作业”对象实现“IJob”方法。每个 IJob 都通过返回一个潜在的新工作列表来结束。
我所有的作业都存储在一个队列中,该队列可以线程安全地访问,当我完成一个作业时,我会将新查询的作业添加到这个队列中。
我正在寻找如何将它与 TPL 并行化。
我有几个想法,但由于我的限制,它们都不是有效的,它们是:
- 我需要限制线程数(假设为 4),因为某些请求正在查询一个网站,这不允许超过 4 个同时请求(我想我可以用信号量来管理)
- 我的作业列表会改变,所以我不能启动 4 个线程,将作业数除以线程数,每个线程都运行他的作业堆栈。
- 也许有时候,如果我有 4 个线程,我只剩下一个作业,但我不能让其他线程停止,因为也许我要运行的最后一个作业会创建更多作业。
非常感谢!
【问题讨论】:
标签: multithreading parallel-processing task-parallel-library