2012-10-17 45 views
3

我正在下載文件,這意味着即使我只有2個內核,它會提高性能,使兩個以上的線程。Parallel.ForEach() - 多少個線程?

即使我將ParallelOptions.MaxDegreeOfParallelism設置爲更高的值,Parallel.ForEach()的線程數是否與內核數量一樣多? ?

+0

您使用的是什麼版本的.NEt?如果您使用.NET4.5,則ReadAsync可能會更容易 –

+0

我正在使用4.0。但我可以問我們是否可以在服務器上安裝4.5。的 – Skuli

+0

可能重複的[是否Parallel.ForEach限制活動線程的數目?](http://stackoverflow.com/questions/1114317/does-parallel-foreach-limits-the-number-of-active-threads) –

回答

3

從技術文檔:

的MaxDegreeOfParallelism限制了傳遞這個ParallelOptions 實例的設定值,如果是陽性的並行方法調用運行併發操作 的數量。如果 MaxDegreeOfParallelism爲-1,則對併發運行的操作數沒有限制。

該函數只拋出ArgumentOutOfRangeExceptionMaxDegreeOfParalleism的類型爲int。所以它意味着它可以創建比核心數更多的線程。

我可以證實它,因爲我已經跑了很多顯示的流程數量完全按照我以前設置的XML生成過程和任務管理器。