【问题标题】:How to configure a maximum number of threads in a Parallel.For如何在 Parallel.For 中配置最大线程数
【发布时间】:2013-04-02 14:51:12
【问题描述】:

这是微软为并行提供的示例,我想知道如何为这段代码配置最大线程数。

     // A basic matrix multiplication.
     // Parallelize the outer loop to partition the source array by rows.
     System.Threading.Tasks.Parallel.For(0, matARows, i =>
     {
        for (int j = 0; j < matBCols; j++)
        {
           // Use a temporary to improve parallel performance.
           double temp = 0;
           for (int k = 0; k < matACols; k++)
           {
              temp += matA[i, k] * matB[k, j];
           }
           result[i, j] = temp;
        }
     }); // Parallel.For

【问题讨论】:

  • 这是真的的例子吗?因为目前确实无效。你能说明它是在哪里出现的吗?
  • 是的。好吧,这里我只展示了相关的片段。整个例子在这里:msdn.microsoft.com/en-us/library/dd460713.aspx
  • 您无缘无故地在参数列表中间粘贴了“System.Threading.Tasks.TaskCreationOptions”,从而呈现了一个语法错误的片段。
  • 糟糕!对不起,我对你说的话视而不见。固定。

标签: c# for-loop parallel-processing


【解决方案1】:

您需要使用MaxDegreeOfParallelism 指定ParallelOptions 值:

例如:

Parallel.For(0, 10, new ParallelOptions { MaxDegreeOfParallelism = 4 }, count =>
{
    Console.WriteLine(count);
});

【讨论】:

  • 每次使用并行:Parallel.ForEach(lines,new ParallelOptions { MaxDegreeOfParallelism = 4 }, line => { Console.WriteLine(line); });
【解决方案2】:

使用MaxDegreeOfParalelism 属性运行循环

Parallel.For(0, 1000, new ParallelOptions { MaxDegreeOfParallelism = 2 }, ...);

【讨论】:

    【解决方案3】:

    我建议您查看ParallelOption.MaxDegreesofParellelism 并将其传递给For 方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 2019-08-17
      相关资源
      最近更新 更多