2

Parallel.For は、最大反復回数が long.MaxValue のループを許可します

Parallel.For(long fromInclusive, long toExclusive, Action<long> body)
{
}

しかし、long.MaxValue よりもはるかに多くの反復を行う Parallel ループを実行する必要がある場合はどうすればよいでしょうか?

EG 必要な反復回数を BigInteger として返す関数があります (long と ulong が十分に大きくないため)。

Parallel.For 実装を「自分でロールバック」する必要がありますか。私の直感は、これは悪い習慣になるだろうということです!

編集:さまざまなコメントに基づいて...私は噛むことができる以上に噛んだと思います!

4

2 に答える 2

4

Int64.MaxValue9,223,372,036,854,775,807 です。

さらに反復を実行する必要がある場合は、設計を再検討する必要があります。

于 2012-11-14T12:28:00.387 に答える
2

@davenewzaに同意しますが、必要に応じて、これが解決策になる可能性があります

Parallel.ForEach(BigIntSequence(1,10), (i) => Console.WriteLine(i));

public IEnumerable<BigInteger> BigIntSequence(BigInteger min,BigInteger max)
{
    BigInteger bi = min;
    while (bi<max)
    {
        yield return bi;
        bi += 1;     
    }
}
于 2012-11-14T12:30:45.283 に答える