2016-11-09 129 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