2016-11-09 13 views
-3

私はforループでもっと多くのスレッドを使いたいと思っています。スレッド数を増やすループC#?

なぜなら、各ループは終了するために待機する必要がある実行中のプロセスであるからです。 現在のところ、私のCPUの100%に近いとは思われません。パフォーマンスを見ると、ほとんどのものはプロセスを待っているからです。

私のコードは今、かなりこのようなものです:

    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

スレッド数が増えれば高速ではありませんが、おそらく1000よりも4〜8スレッドで高速になります。 – 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

関連する問題