Parallel.For允许循环的最大迭代次数为long.MaxValue
Parallel.For(long fromInclusive, long toExclusive, Action<long> body)
{
}
但是如果我需要执行一个并行循环会比long.MaxValue有更多的迭代呢?
E.G。我有一个函数,它返回所需的迭代次数作为BigInteger(因为long和ulong不够大)。
我是否必须“自己动手”Parallel.For实现。我的直觉是,这将是不好的做法!
编辑:基于各种评论......我想我已经咬过的东西比我可以咀嚼的多了!
答案 0 :(得分:4)
Int64.MaxValue
是9,223,372,036,854,775,807。
如果您需要执行更多迭代,那么您真的需要重新考虑您的设计。
答案 1 :(得分: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;
}
}