2011-05-13 22 views
0

我得到了下面的代碼如何確保進行AsParallel()是工作在並行

foreach (var portfolio in portfolios.AsParallel()){ Some Processing ...} 

,並希望確保工作在平行於不同的核心。有什麼方法可以確保這一點?

我試圖

   Parallel.ForEach(portfolios, 
       portfolio => 
       { Some Processing....} 

,可以看到不同的線程創建和刪除,也可以看到在並行任務窗口並行任務,但不知道Collection.AsParallel()也是這個是給我一些不可預知的行爲。

有什麼更好的想法嗎?

回答

3

AsParallel的觀點是你不知道。你把它留給CLR,它會決定如何運行和優化它,儘管它很可能會並行運行。

你還需要解釋你的意思是不一致的。您很可能會遇到線程和同步問題。除非您關注狀態的同步,否則任何不是線程安全的操作都不適用於AsParallel

+0

在foreach循環中,處理後它會生成另一個類型爲「評論」的集合。根據邏輯,這個集合不應該有任何空的評論對象,但由於它的一些Parallel.ForEach()。任何想法來解決這個問題。 – TheITGuy 2011-05-13 13:38:17