2012-01-06 36 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 

的整数的顺序可能会有所不同,但第二个第一后总是会来。

+4

当你考虑它时也是有意义的,因为该方法返回一个'ParallelLoopResult',它只会在所有线程都终止后才可用。 – 2012-01-06 10:15:52

+1

@GeorgeDuckett确实。这是有道理的,很容易验证。 – Ray 2012-01-06 10:17:01

+0

也TIL'Console.WriteLine'是线程安全的。 – Ray 2012-01-06 10:18:20