我想并行运行一部分代码。目前我正在使用 Parallel.For
如何让 10、20 或 40 个线程同时运行
我当前的代码是:
Parallel.For(1, total, (ii) =>
{
doJob(ii);
});
我想并行运行一部分代码。目前我正在使用 Parallel.For
如何让 10、20 或 40 个线程同时运行
我当前的代码是:
Parallel.For(1, total, (ii) =>
{
doJob(ii);
});
ParallelOptions opts = new ParallelOptions() { MaxDegreeOfParallelism = 20}
Parallel.For(1, total,opts, (ii) =>
{
doJob(ii);
});
但我鼓励您阅读文档,因为它说明了一些您需要考虑的有趣事实,例如:
默认情况下,For 和 ForEach 将使用底层调度程序提供的线程数,因此从默认值更改 MaxDegreeOfParallelism 只会限制将使用多少并发任务。
此外,它还提供了一些指导:
该设置的存在主要是为高级使用提供控制。例如,如果您知道您正在使用的特定算法不会扩展到超过一定数量的核心,您可以设置 MaxDegreeOfParallelism 属性以避免在其他核心上浪费周期。或者,如果您同时运行多个算法并希望手动划分它们可以使用的系统量,您可以为每个算法设置一个 MaxDegreeOfParallelism 值。
这是你想要的?
Parallel.For(1, total, new ParallelOptions { MaxDegreeOfParallelism = 10 },
(ii) =>
{
doJob(ii);
});