2011-08-29 35 views
14

Theo mặc định (không có .combine), foreach /% dopar% trả về kết quả trong danh sách. Thứ tự các kết quả trong danh sách có được đảm bảo khớp với thứ tự của vòng lặp/vòng lặp không? Nói cách khác, thứ tự sẽ giống như khi lặp lại tuần tự? HOẶC danh sách có được điền như là một nhiệm vụ song song hoàn thành? Duyệt tài liệu, tôi thấy rằng có tham số .inorder, nhưng dường như chỉ áp dụng khi sử dụng hàm .combine.foreach% dopar% - đảm bảo về thứ tự kết quả?

Trả lời

21

Khi cuộc gọi kết thúc, kết quả của foreach sẽ theo thứ tự như đối với vòng lặp 'bình thường'. Tuy nhiên, không có sự bảo đảm nào cho thứ tự mà chúng tới đó ': theo lý thuyết (và khi song song, cũng trong thực tế), mục đầu tiên có thể được điền vào sau phần thứ hai.

Vì vậy, bạn không có đảm bảo về thứ tự thực thi (ví dụ: thanh tiến trình hoặc ghi nhật ký có thể được rải sỏi), nhưng bạn có thể yên tâm rằng kết quả sẽ theo thứ tự bạn mong đợi.

+1

Nick - cảm ơn! Tôi đánh giá cao sự khác biệt giữa thứ tự thực hiện và thứ tự kết quả – SFun28

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