[英]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.