18
私は2つのforループを持っています。第2のループはを開始しなければならず、を開始した後にを開始する必要があります。並列Forループ。彼らは仕上げを待っていますか?
ループを2つ使用すると、2番目のループは最初のループの終了後に実行されますか?
私は2つのforループを持っています。第2のループはを開始しなければならず、を開始した後にを開始する必要があります。並列Forループ。彼らは仕上げを待っていますか?
ループを2つ使用すると、2番目のループは最初のループの終了後に実行されますか?
はい。 Parallel.For
はすべての操作が完了するまで戻りません。
あなたは
Parallel.For(0, 5, i => Console.WriteLine("First {0}", i));
Console.WriteLine("First Finished");
Parallel.For(0, 5, i => Console.WriteLine("Second {0}", i));
Console.WriteLine("Second Finished");
を実行した場合、出力は
First 0
First 2
First 1
First 4
First 3
First Finished
Second 0
Second 4
Second 3
Second 2
Second 1
Second Finished
整数の順序は異なりますが、2番目は、常に最初の後に来るです。
メソッドがParallelLoopResultを返すので、それについて考えると意味があります。これは、すべてのスレッドが終了した後にのみ使用可能になります。 –
@GeorgeDuckett確かに。それは理にかなっており、容易に確認することができます。 – Ray
また、TIL 'Console.WriteLine'はスレッドセーフです。 – Ray