[英]Run x number of threads in c# loop
在控制台应用程序中,我为另一个循环中的每个循环并行运行,但我的一个更新可能需要 10 分钟,而其余的只需要 1 秒。 这意味着 99 个已完成,但它会等待剩余的 1 个完成,然后才能运行下一批。
List<Items> myItems = GetItems();
while (myItems.Count > 0)
{
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = 100;
Parallel.ForEach(myItems, options, item => {
CallUpdate(item.ID);
});
// Get some more records and loop
myItems = GetItems()
}
有没有更好的方法来做到这一点,以便在某些项目存在时始终可以运行 100 个线程?
您的描述非常适合生产者/消费者模式实现。 您可以使用BlockingCollection创建该模式的简单实现
但是如果复杂性增加,那么像TPL这样的东西可能是更好的选择。 这是使用 TPL 的生产者/消费者示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.