我开始一个小小的“工作管理器”,它会执行一个“Job”对象实现一个“IJob”方法。每个IJob都会返回潜在的新工作列表。使用TPL做一些“工作”
我所有的工作都存储在一个队列中,这个队列可以安全地访问线程,当我完成一个工作时,我将这个队列添加到新的查询作业中。
我正在寻找如何将此与TPL并行化。
我有一些想法,但他们都不是有效的,由于我的限制,这是:
- 我需要限制线程的数量(假设4),因为有些要求是quering一个网站,它不允许超过4个同时请求(我想我可以用信号量来管理这个)
- 我的工作列表将会改变,所以我不能启动4个线程,将工作数量除以数字的线程,并且每个线程都运行他的一堆工作。
- 也许有时候,如果我有4个线程,我只有一个工作更多,但我不能让其他线程停下来,因为也许我上次运行的工作会创造更多的工作。
非常感谢!
呀的例子,但我仍然有我的主要问题,这并不为集合其变化工作。他们总是做一个 collection.AsParallel(),但是这将不会考虑我添加到集合中的所有新作业: – J4N 2011-04-15 20:47:10