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