2009-06-11 49 views
2

我正在研究使用生产者\消费者线程模式来运行从数据库中检索到的字符串列表,然后打算运行powershell命令。由于powershell命令可能相当密集,我只想一次产生3个线程,然后再等待一个线程完成。我看着tread水池,但它看起来像用于更轻量级的处理。自定义多线程循环

我是新的线程,并在互联网上看到了一些生产者\消费者的例子,但我不知道如何处理3线程循环情况使用等待手柄(如果多数民众赞成的方式来做到这一点)。我想我必须使用waithandle.waitany来达到上述目的,但我不知道如何实现这一点。如果有人能在正确的方向指向我,我将是最欣赏

感谢

回答

3

在其中添加工作项目使用的队列。然后产生尽可能多的线程并发运行,并让它们运行一个循环,试图从工作项目队列中获取项目(确保以正确同步的方式进行)。

如果在开始处理之前已经填充队列,则可以使用空队列作为条件来结束线程中的循环。在这种情况下,您可以等待所有线程停止,以便知道所有项目何时完成处理。

0

如果您可以使用.NET 4.0,则可以使用Task类和TaskScheduler实例以及有限的MaximumConcurrencyLevel集合进行调查。