2016-11-09 140 views
-3

我希望能夠在for循環中使用更多的線程。增加線程數量for循環C#?

爲什麼是因爲每個循環都運行它需要等待退出的進程。 目前它似乎並沒有接近100%我的CPU,並且看大多數東西的性能來自等待進程。

我的代碼是相當多現在這個樣子:

    Parallel.For(0, count, i => 
       { 
        ........ 

       }); 

一切都是事後同步所以不要緊多少線程每說運行。 他們不需要在運行期間同步數據或任何東西,所以在這方面它是免費的。

謝謝。

編輯:

好吧,我試着尋找什麼讓它變慢。 由於某些原因,它確實需要CPU, 它只是不顯示它,可能導致它正在運行「控制檯窗口主機」?

在這種情況下,限制確實是CPU,該死的-_-。 不過,它爲什麼不顯示爲一個正常的過程?

它基本上是:

using (Process pRocess = new Process()) 
    { 
     pRocess .StartInfo.Filename = "somefile.exe"; 
     work work and also, maybe more work. 
     pRocess.WaitForExit(); 
    } 
+0

什麼是進程本身在等待?它可能不是CPU ... –

+2

更多的線程並不意味着更快,你可能會更快與4-8線程比1000. – mybirthname

+0

投擲更多的線程在一個問題是從來沒有正確的方式來解決上述問題。 – Brandon

回答

2

也許你的意思是

Parallel 
    .For(0, 10, new ParallelOptions() {MaxDegreeOfParallelism = 10}, 
    i =>{ Console.WriteLine(Thread.CurrentThread.ManagedThreadId); }); 

但注意,這不是線程數。更多信息在這裏https://msdn.microsoft.com/en-us/library/system.threading.tasks.paralleloptions.maxdegreeofparallelism%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

+0

我接受了這個答案,因爲我所要求的不需要, 我只是失敗了,對不起:) – Zerowalker