gpt4 book ai didi

C# threading with max thread count 然后等待

转载 作者:行者123 更新时间:2023-11-30 19:29:46 24 4
gpt4 key购买 nike

我有一个生成线程的 for 循环...我希望它生成 5 个线程,然后等到它下降到 4 个,然后生成另一个线程。

基本上,如果我有 100 条记录,我想一次处理 5 条。哪种方法是首选?

最佳答案

首选 方法可能是为此使用一种内置机制。

例如,Parallel.ForEach可以选择指定 MaxDegreeOfParallelism使用,这对应于使用的最大线程数。

这样你就可以写出如下内容:

var options = new ParallelOptions { MaxDegreeOfParallelism = 5 };
Parallel.ForEach(records, options, rec =>
{
ProcessRecord(rec);
});

如果您的“记录处理”是映射或查询操作,另一个不错的选择是使用 PLINQ 的 WithDegreeOfParallelism限制并行度:

var results = records.AsParallel().WithDegreeOfParallelism(5).Select(r => ProcessRecord(rec)).Where(result => result.Foo); // Some query...

如果您只是“处理”每条记录(即:ProcessRecord 是一个 void 方法),我会选择第一个选项;如果您正在对记录进行某种类型的映射操作或查询,然后返回,我会选择第二个记录处理的结果。

关于C# threading with max thread count 然后等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11090142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com