你可以猜到 Parallel.For() 循环的索引从一个值跳转到另一个值。我如何估计完成的工作量?
谢谢。
通过保留计数器而不是查看索引?例如:
int counter = 0;
Parallel.For(4, 500, i => {
// TODO: something useful...
int progress = Interlocked.Increment(ref counter);
Console.WriteLine("{0}: {1}", progress, i);
});
(该Interlocked
用法对于避免在访问时获得竞争条件至关重要counter
)
int progress = 0;
Parallel.For( from, to, i => {
// do the job
Interlocked.Increment(ref progress);
});
现在实际进展是(float)(to - from) / progress