2012-01-06 18 views

Odpowiedz

31

Tak. Parallel.For nie powróci, dopóki wszystkie operacje nie zostaną zakończone.

Jeśli prowadzisz

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"); 

Wyjście jest

First 0 
First 2 
First 1 
First 4 
First 3 
First Finished 
Second 0 
Second 4 
Second 3 
Second 2 
Second 1 
Second Finished 

Kolejność liczb będą się różnić, ale drugi będzie zawsze przychodzą po raz pierwszy.

+4

Ma sens, gdy się nad tym zastanowić, ponieważ metoda zwraca 'ParallelLoopResult', który będzie dostępny dopiero po zakończeniu wszystkich wątków. –

+1

@GeorgeDuckett Rzeczywiście. Ma to sens i jest łatwe do zweryfikowania. – Ray

+0

Również TIL 'Console.WriteLine' jest bezpieczny dla wątków. – Ray

Powiązane problemy