2

Parallel.For 允许循环最大迭代为 long.MaxValue

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

但是如果我需要执行一个迭代次数比 long.MaxValue 多得多的并行循环怎么办?

EG 我有一个函数,它以 BigInteger 的形式返回所需的迭代次数(因为 long 和 ulong 不够大)。

我是否必须“推出自己的”Parallel.For 实施。我的直觉是,这将是不好的做法!

编辑:基于各种评论......我想我已经咬得比我能咀嚼的还多!

4

2 回答 2

4

Int64.MaxValue是 9,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 回答