C#parallel,如何设置线程数

时间:2013-11-13 01:49:02

标签: c# multithreading parallel-processing

我想并行运行部分代码。 目前我正在使用Parallel.For

如何让10个,20个或40个线程同时运行

我目前的代码是:

        Parallel.For(1, total, (ii) =>
            {
                doJob(ii);
            });

2 个答案:

答案 0 :(得分:3)

设置MaxDegreeOfParallelism选项:

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);
  });