Như bạn có thể đoán chỉ số của vòng lặp Parallel.For() nhảy từ một giá trị này sang giá trị khác. Làm thế nào tôi có thể ước tính số lượng công việc đã làm?Cập nhật tiến trình trong Parallel.For() vòng
Cảm ơn.
Như bạn có thể đoán chỉ số của vòng lặp Parallel.For() nhảy từ một giá trị này sang giá trị khác. Làm thế nào tôi có thể ước tính số lượng công việc đã làm?Cập nhật tiến trình trong Parallel.For() vòng
Cảm ơn.
Bằng cách giữ một bộ đếm chứ không phải nhìn vào các chỉ số? Ví dụ:
int counter = 0;
Parallel.For(4, 500, i => {
// TODO: something useful...
int progress = Interlocked.Increment(ref counter);
Console.WriteLine("{0}: {1}", progress, i);
});
(việc sử dụng Interlocked
là điều cần thiết để tránh bị đua điều kiện tiếp cận counter
)
int progress = 0;
Parallel.For(from, to, i => {
// do the job
Interlocked.Increment(ref progress);
});
nay tiến độ thực tế là (float)(to - from)/progress
Và [tại đây] (https://gist.github.com/0xorial/8b82594e8f2b96beae77) được gói cùng một loại. – ironic