PLINQ即将到来(PFX)
来源:百度文库 编辑:神马文学网 时间:2024/04/30 02:08:02
随风 发表于 2007年10月30日
浏览:745 评论:0 源代码附件:0
C#,.NET 3.0/3.5
翻译
Mohammed H. El-Sherief. 著PLINQ is coming up soon (PFX)
简介
自从微软宣布LINQ的时候,我就听说了PLINQ(Parallel Linq),基本思想是DotNet3.5将提供一些新的功能,以更好地利用多核计算机。这个想法非常好,现在也在一个新名词Parallel FX 或 PFX中实现了。
背景
LINQ(Language Integrated Queries) 是C# 3.0, VB9和.net 3.5 中的一个新功能,它提供了一个数据访问的更好的抽象,这样编译器就能更好地优化你的程序(不正对绝对的高手)。
PLINQ可以让你的程序更好地在多核处理器上运行,而不需要使用额外的线程,更不需要进行锁保护等……
PLINQ的编程和LINQ模型一样简单,新的引用库是System.Concurrency.dll,它包括了一个新的接口IParallelEnumerable
代码使用
看看下面的代码
IEnumerable
这是你在C# 3.0中写的程序,现在,如果你想添加PLINQ功能,你唯一要做的是在使用任何查询前添加AsParallel函数。
这样,代码如下:
IEnumerable data = new int[] {1, 2, 3, 4, 5, 6}; // or whatever complex data collectionvar q = data.AsParallel().Where(x => x > 4).OrderBy(x=>x).Select(x => x);foreach (var i in q) ....
或,用LINQ查询分格编写:
IEnumerable data = new int[] {1, 2, 3, 4, 5, 6}; // or whatever complex data collectionvar q = from i in data.AsParallel()where i > 4orderby iselect i;foreach(var i in q) ....
一旦你添加了AsParallel函数调用,PLINQ就可以在运行的时候把所有的OrderBy, Where, Select, GroupBy等等分配到各个允许的处理器上执行。不过,这并不意味着你可以用PLINQ做任何查询。ParallelEnumerable类还提供了一些其它的方法,如ForAll,它可以用于一个特定集合上的所有成员的一些操作。
IEnumerable data = new int[] {1, 2, 3, 4, 5, 6}; // or whatever complex data collectiondata.ForAll(i=>Console.WriteLine(i));
当然,上面的代码功能是非常简单的,也就是打印一些成员;不过,如果你要做一些复杂的功能,ForAll就会让你的处理速度大大加快。
这些都不是System.Concurrency控件库里的全部,新的并行类提供了一些其它的通用并行语句,因此它和LINQ没有直接的关系,不过最重要的部分是并行,如并行循环语句。
void ParMatrixMult(int size, double[,] m1, double[,] m2, double[,] result){Parallel.For( 0, size, delegate(int i) {for (int j = 0; j < size; j++) {result[i, j] = 0;for (int k = 0; k < size; k++) {result[i, j] += m1[i, k] * m2[k, j];}}});}
这是,我从这里拷贝过来的例子,它展现了如何使用Parallel.For。
这就是我在这一篇文章中所能写的所有内容了,当然,System.Concurrency包含更多的更酷的API。
其它资源
我曾经把这篇文章发布在我的博客上
Optimize Managed Code for Multi-Core MachinesRunning Queries on Multi-Core processorsChannel9 Video Programming in the Age of Concurrency (Andres Hejlsberg and Joe Duffy)
PLINQ即将到来(PFX)
PLINQ即将到来(PFX)
MyBlogLog 2.0 即将到来?!
全球通货膨胀即将到来
即将到来的经济危机?
Google Picasa 3 即将到来?
即将到来的上海世博会
时寒冰:全球性通货膨胀即将到来
洋中医时代即将到来
即将到来的通胀噩梦
真正的经济危机即将到来
真正的经济危机即将到来
真正的经济危机即将到来
SNS 2.0时代到来 世界即将改变
中国轿车的世纪即将到来
即将到来的中国大萧条
国有企业集中并购重组大潮即将到来
SNS 2.0时代到来 世界即将改变
企业计算的“智能”时代即将到来
即将到来的第四波移民潮
即将到来的第四波移民潮
个性化教育---即将到来的全球大事件
即将到来的第四波移民潮
科学家揭秘:世界末日即将到来?