ご想像のとおり、Parallel.For() ループのインデックスは、ある値から別の値にジャンプします。完了した作業量を見積もるにはどうすればよいですか?
ありがとう。
ご想像のとおり、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