在.NET 3.5中使用Parallel.For()

網友KENCHAO問到"好威的Parallel.For可以用在.NET 3.5上"嗎?

微軟在Task Parallel Library CTP版本時代,曾提供過相容於.NET 3.5的Microsoft Parallel Extensions for .NET Framework 3.5。但找了一下,官方似乎已不再提供該版本的下載... 但是別氣餒,依據MS Parallel Programming RD小組在2009年11月的PO文,有一個來自個DevLabs的替代解決方案--Reactive Extensions to .NET (Rx),其中有個System.Threading.dll可向前相容Parallel Extensions for .NET Framework 3.5(但不提供技術支援),靠著它,我們就可讓Parallel.For在.NET 3.5中也大顯神威~~~

Rx首頁下載【Rx for .NET Framework 3.5 SP1】,安裝後你可以在C:\Program Files\Microsoft Reactive Extensions\Redist\DesktopV2 找到System.Threading.dll。

用VS2008開啟一個.NET 3.5專案,新增參考指向剛才提到的System.Threading.dll,在程式開端加個using System.Threading.Tasks宣告,接著在程式碼中就可以大大方方地使用Parallel.For囉!

不過,要注意幾點:

  1. 在.NET 3.5使用TPL所能展現的效能會遜於.NET 4.0,理由是.NET 4.0在ThreadPool及一些效能調校上還做了額外增強。
  2. 不提供官方支援。
  3. 透過.NET 3.5使用TPL時,無法享用VS2010的Parallel Task/Parallel Stack/Concurrency Visualizer等平行運算專屬新工具。
  4. OperationCanceledException的使用與.NET 4.0的版本有些差異。

雖然有以上限制,但能在.NET 3.5裡用Parallel.For()簡化原本囉嗦的多執行緒寫法,畢竟還是件爽快的事,值得一試!

歡迎推文分享:
Published 05 February 2010 09:25 PM 由 Jeffrey
Filed under:
Views: 16,234



意見

# zhang said on 13 May, 2011 04:08 PM

我今天在devlab首页下载后按了完全没有System.Threading.dll, 请问哪里可以得到?

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<February 2010>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication