2012-01-06 3 views

答えて

31

はい。 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番目は、常に最初の後に来るです。

+4

メソッドがParallelLoopResultを返すので、それについて考えると意味があります。これは、すべてのスレッドが終了した後にのみ使用可能になります。 –

+1

@GeorgeDuckett確かに。それは理にかなっており、容易に確認することができます。 – Ray

+0

また、TIL 'Console.WriteLine'はスレッドセーフです。 – Ray