摘要:Welcome to the Parallel Extensions team blog!

摘要:Welcome to the Parallel Extensions team blog!


第一、CPU的clock speed成长受到局限,multi-core cpu成为取代方案。

第二、当今(2007年)的程序员采用thread的主要原因在于增加人机交互的即时响应(responsiveness)与IO处理,反而忽略提高性能的用途。所以需要新的程序设计模型。

第三、LINQ提供程序语言的关键字与API界面查询广泛的数据来源。PLINQ与LINQ共用大部分相同的stand query operators,但是在PLINQ在LINQ的模型下是采用query analysis以决定要采用哪一些data parallelism的算法,如filtering、mapping、reductions、loop tiling、sorts......等等。

第四、PLINQ提供declarative queries。而Task Parallel Library (TPL)提供imperative data parallelism与imperative task parallelism,特别是针对不能使查询与法解决的问题提供解决方案。

第五、TPL可以协助程序员使用既有的循序的程序表达可能的平行算法,而且可以动态扩充至所有可用的处理器。

第六、Parallel类就是透过TPL实践而得。所以Parallel类仅适用于取代For、ForEach与Do。但是TPL却针对Task类提供许多功能。

第七、TPL自.Net ThreadPool提供许多功能,包含分离与孤立的thread pool、支持waiting与cancellation。并且采用可以高度扩充(high scalable)的work-stealing算法。work-stealing算法已被证明适合硬件中高程度的平行算法。

参考数据来源:

[1]Welcome to the Parallel Extensions team blog!
http://blogs.msdn.com/b/pfxteam/archive/2007/11/29/6558413.aspx

延伸阅读:

[1]Optimize Managed Code For Multi-Core Machines
http://msdn.microsoft.com/en-us/magazine/cc163340.aspx

[2]The .NET Standard Query Operators
http://msdn.microsoft.com/en-us/library/bb394939.aspx

[3]Running Queries On Multi-Core Processors
http://msdn.microsoft.com/en-us/magazine/cc163329.aspx

[4]The Free Lunch Is Over, A Fundamental Turn Toward Concurrency in Software, By Herb Sutter
http://www.gotw.ca/publications/concurrency-ddj.htm

[5]Software and the Concurrency Revolution
http://queue.acm.org/detail.cfm?id=1095421