【发布时间】:2025-11-25 15:55:01
【问题描述】:
我真的不明白何时使用 WithDegreeOfParallelism 以及它如何提高性能?
不确定在什么情况下限制执行查询的最大任务数
【问题讨论】:
标签: .net task parallel-processing
我真的不明白何时使用 WithDegreeOfParallelism 以及它如何提高性能?
不确定在什么情况下限制执行查询的最大任务数
【问题讨论】:
标签: .net task parallel-processing
搜索时的第二个链接给出了Introduction to PLINQ 页面,其中给出了两个示例:
当您想确保计算机上运行的其他进程获得一定量的 CPU 时间时,这很有用。
在查询执行大量非计算密集型工作(例如文件 I/O)的情况下,指定并行度大于机器上的内核数可能会有所帮助。
如果这些都不吸引您,或者与您使用 PLINQ 的方式相匹配,并且您想不出任何其他情况(例如,如果他们将竞争使用其他具有有限资源的资源)可用的实例数)然后我建议将其排除在外。
【讨论】:
您可以在并行循环中使用此方法。比如我在DataGridView的记录过程中使用了parallizm。
int tasks = Environment.ProcessorCount;
DataGrid.Rows.AsParallel().OfType<DataGridViewRow>().WithDegreeOfParallelism(tasks).ForAll(i =>
{
// some code
});
默认情况下,DegreeOfParallelism 等于处理器内核数。此参数定义在处理时将创建多少并发任务(即线程)。当我使用默认程度(4 核)时,我的应用程序“挂起”了一点,所以我决定将并行度降低到 2。无论如何,您应该根据需要选择此参数的值(或让用户选择强制他做出选择;))
【讨论】: