欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

PFX开启并行计算的时代

程序员文章站 2022-05-18 12:29:51
...
Microsoft的FX家族,除了WPF,WCF等等外,又添加新丁PFX,即Parallel Extensions发布. Parallel Extensions最初发布的时候叫做PLINQ或者Parallel LINQ。当时它是一个LINQ Provider,可以自动地将查询并行化。不过现在它的范围已经大大扩张了。

其中最重要的一个改变是不再局限于查询。因为开发团队认识到有些算法无法自然地用LINQ来表达,因此将会有一套强制式的数据并行API。

包括:在匿名函数里头的Parallel For语法。和Threading.Tasks命名空间。它为调度操作提供了一个高级的任务管理器。与现在的线程池不同,在这个管理器中任务可以和其他任务关联。因此取消一个任务就可以自动地取消该任务的全部子任务。

有些被强烈要求的特性还没出现在Parallel Extensions当中。Joe Duffy列出了其中的一些,包括可验证的线程安全(verifiable thread safety)以及自动化的并行性(automatic parallelism)。另一个考虑中的特性是使用图形处理器来完成通用的操作。

同样的功能要等待Java 7.0才可能具备,预计时间将是2009年.

一个简单的PLINQ Demo,运行在PLINQ CTP之上.
using System;
using System.Collections.Generic;
using System.Linq;

namespace PLinqDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] words = new[] { "Hello", "World", "PLINQ", "IS", "NOT", "BAD", "!!" };

            var lazyBeeQuery = from word in words.AsParallel() select word;

            lazyBeeQuery.ForAll<string>(word => { Console.WriteLine(word); });
        }
    }
}


图片是一个普通的LINQ和PLINQ循环100000次后的情况,红色框里的是普通LINQ,蓝色框里是PLINQ,请注意我的双核系统负载的前后差异(该例子只是为了显示负载,并未为并行计算而设计)

PFX开启并行计算的时代
相关标签: Linq WCF