WithDegreeOfParallelism .Net任务

时间:2012-01-19 10:33:20

标签: .net task parallel-processing

我老实说不明白何时使用WithDegreeOfParallelism以及它如何提高性能?

不确定在什么上下文中限制执行查询的最大任务数

2 个答案:

答案 0 :(得分:3)

搜索时的第二个链接会显示Introduction to PLINQ页面,其中有两个示例:

  

当您想确保计算机上运行的其他进程收到一定的CPU时间时,这非常有用。

     

如果查询正在执行大量非计算绑定工作(如文件I / O),则指定并行度大于计算机上的核心数可能会有所帮助。

如果这些都不是对您有吸引力,或者与您使用PLINQ的方式相匹配,并且您无法想到任何其他情况(例如,如果他们将竞争使用其他有限的资源)可用的实例数量)然后我建议将其删除。

答案 1 :(得分:0)

您可以在并行循环中使用此方法。例如,我在DataGridView中的记录过程中使用了paralellizm。

int tasks = Environment.ProcessorCount;
DataGrid.Rows.AsParallel().OfType<DataGridViewRow>().WithDegreeOfParallelism(tasks).ForAll(i =>
{
  // some code
});

默认情况下,DegreeOfParallelism等于处理器核心数。此参数定义在处理时将创建多少并发任务(即线程)。当我使用默认度(4个核心)时,我的应用程序“挂起”了一点,所以我决定将并行度降低到2.无论如何你应该根据需要选择这个参数的值(或者给用户选择强制他做出选择;))