概要
每台计算机上的物理内核数目不一样,在程序并行运行时并不是运用的内核数越多越好。某些情况下根据实际情况动态的配置会达到更好的效果。
ForAll可以看做是 .NetFramework提供的一种提高效率简化编程的一种可选的操作。它本身就是并行的,主要针对的是处理无序的集合。
PLINQ指定并行度
指定并行度的API:WithDegreeOfParallelism(N),并行度并不是越大越好,如果运算时把CPU都占满了,很有可能影响GUI对用户的响应。
示例代码:
代码中指定了不同的并行度,并且对他们的运算时间进行了比较 分别指定为2 和 4。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
namespace Sample6_5_plinq_withdegreeofparallelism
{
class Program
{
static int NUM_INTS = 500000000;
static ParallelQuery<int> GenerateInputeData4Parallel()
{
return ParallelEnumerable.Range(1, NUM_INTS);
}
static void Main(string[] args)
{
var palTarget = GenerateInputeData4Parallel();
Console.WriteLine("============================================================");
Console.WriteLine("TEST PARALLEL LINQ: Parallelism = 2");
Console.WriteLine("===============