我老实说不明白何时使用WithDegreeOfParallelism以及它如何提高性能?
不确定在什么上下文中限制执行查询的最大任务数
答案 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.无论如何你应该根据需要选择这个参数的值(或者给用户选择强制他做出选择;))