摘要: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