5

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

ありがとう。

4

2 に答える 2

7

インデックスを見るのではなく、カウンターを維持することによって?例えば:

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

于 2010-10-21T09:33:40.143 に答える
3
int progress = 0;
Parallel.For( from, to, i => {
// do the job
Interlocked.Increment(ref progress);
});

現在、実際の進捗状況は(float)(to - from) / progress

于 2010-10-21T09:33:18.613 に答える