使用并行循环生成素数

时间:2014-02-13 08:21:42

标签: c#

我正在编写一个用于生成素数的并行循环

Parallel.For(0, maxNumber, (i, loopState) =>
{
    if (IsPrime((UInt32)i))
    {
        Interlocked.Increment(ref primesFound);
        if (primesFound > maxPrimes)
        {
            Console.WriteLine(“Last prime found: {0:N0}”,i);
            loopState.Stop();
        }
    }
});

有人可以解释一下这是如何工作的,特别是loopstate在这里有什么用途,如果我不想要它会怎么样。

1 个答案:

答案 0 :(得分:1)

loopState为您提供了

Parallel.ForEach,它是一个ParallelLoopState实例,可让您执行停止迭代等操作 - 当您找到所需的所有数据时非常有用。如果你不需要它,只需使用不暴露它的重载:

Parallel.For(0, maxNumber, i => {
   // ....
});