2012-01-06 64 views

Trả lời

31

Có. Parallel.For sẽ không trở lại cho đến khi tất cả các hoạt động đã hoàn thành.

Nếu bạn chạy

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

Đầu ra là

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

Thứ tự của các số nguyên sẽ khác nhau, nhưng thứ hai sẽ luôn luôn đến sau đầu.

+4

Làm cho cảm giác khi bạn nghĩ về nó cũng như phương thức trả về một 'ParallelLoopResult', mà sẽ chỉ có sẵn khi tất cả các chủ đề đã chấm dứt. –

+1

@GeorgeDuckett Thật vậy. Nó có ý nghĩa và dễ dàng để xác minh. – Ray

+0

Ngoài ra TIL 'Console.WriteLine' là chủ đề an toàn. – Ray

Các vấn đề liên quan