究竟是什么PLINQ?
在.NET 4.0框架中添加了PLINQ,作为对LINQ的扩展。
- 它是什么?
- 它解决了什么问题?
- 什么时候适合,什么时候不适合?
这是并行LINQ。 这是在多核/多处理器系统上并行运行LINQ查询的一种方式,以便(希望)加速它们。
在MSDN杂志上有一篇很好的文章。
对于当前的细节和计划,我build议阅读有关.NET团队博客并行编程的文章。 他们是执行并行扩展的团队,包括PLINQ。
PLINQ是LINQ并行执行的,也就是说,使用和你当前计算机一样多的处理能力。
如果你有一个双核心处理器的计算机,你会得到你的语言集成查询操作员并行使用两个核心的工作。
使用“只有”LINQ,你不会得到那么多的性能,因为标准的语言集成查询操作符不会并行化你的代码。 这意味着您的代码将以串行方式运行,而不是利用所有可用的处理器内核。
有许多PLINQ查询操作符能够使用众所周知的并行模式来执行您的代码。
看一下我的博客文章,当我使用AsParallel扩展方法在并行运行一个简单的LINQ查询时,显示了你得到的速度:
并行LINQ(PLINQ)与Visual Studio 2010/2012 – Perftesting
如果你想深入使用PLINQ,我build议你阅读:
并行编程模式:了解和应用.NET Framework 4的并行模式
它是一个库,允许你采取一个正常的LINQ查询,把它分成更小的任务,并利用处理器核心在多个线程上执行每个单独的任务。
它允许您添加.AsParallel到您的LINQ尝试使用尽可能多的处理器执行查询。 整洁,但你仍然需要知道一点关于你的algorithm是否“可并行化” – 这不是魔术。
它基本上不需要pipe理一个线程池,并pipe理同步从每个线程返回的结果 – 通常没有并行扩展库,你将不得不手动做这个。
从维基百科的并行扩展 :
并行LINQ(PLINQ)是LINQ的一个并发查询执行引擎,它对对象(LINQ到对象)和XML数据(LINQ到XML)的查询执行并行化。 PLINQ旨在通过使用查询来公开数据并行性。 任何已经作为查询实现的对象计算都可以由PLINQ来并行化。 但是,对象需要实现由PLINQ本身定义的IParallelEnumerable接口。 它在内部使用TPL执行。