具有并行度.Net任务



我真的不明白什么时候使用WithDegreeOfParallelism,以及它如何提高性能?

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

搜索时的第二个链接提供PLINQ简介页面,其中提供了两个示例:

当您希望确保计算机上运行的其他进程接收到一定的CPU时间时,这很有用。

在查询执行大量非计算绑定工作(如文件I/O)的情况下,指定一个大于机器上核心数量的并行度可能是有益的。

如果这两种情况都不吸引你,或者与你使用PLINQ的方式不匹配,并且你想不出任何其他情况(例如,如果他们将竞争使用其他可用实例数量有限的资源),那么我建议将其排除在外。

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

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

默认情况下,DegreeOfParallelism等于处理器内核的数量。此参数定义在处理时将创建多少并发任务(即线程)。当我使用默认度(4核)时,我的应用程序"挂起"了一点,所以我决定将并行度降低到2。在任何情况下,您都应该根据需要选择此参数的值(或为用户提供强制选择的选项;))

最新更新