このfor
ループのParallel.For
バージョンを達成する方法はありますか?Parallel.Forステップを使用してください!1
for (int i = 0; i < 100; i += 2) { DoStuff(i); }
論理的には不可能な理由は考えられませんが、ステップパラメータを受け入れるオーバーロードはありません。そうParallel.ForEach
オプションないint
sの範囲にParallel.ForEach
を使用して
thisとthis質問への受け入れ答えは示唆はEnumerable.Range
を使用して生成されますが、私の場合、私は、スレッドローカルデータに
を使用しています。
別のオプションは、ちょうど私のループとreturn
の本体でi % 2 == 0
かどうかを確認することですが、これはまだFunc
とファイナライザFunc
初期化子スレッドローカルデータを実行します。以下は、このオプションを実証コードスニペットです:ここで
Parallel.For<Bar>(0, limit,
() => new Bar(), //thread local data initialize
(i, state, local) => //loop body
{
if (i % 2 != 0) return local;
local.foo += DoStuff(i);
return local;
},
(local) => //thread local data post-action
{
lock (loopLocker)
{
globalData.foo += local.foo;
);
}
);
何を変換しなかった後、私のために働いた階段状のインデックスを処理するための別の方法です:) ありがとうございます。 – Rotem