2010-08-21 62 views
7

假设您有一个由1000个随机整数组成的数组,您需要遍历它以找到数字68。Parallel.For中断

在四核CPU上使用新的Parallel.For将显着提高速度,使每个核心只能运行250个阵列项目。

问题是:当符合以下条件时是否可以中断Parallel.For循环?

if (integerArray[i] == 68) 

    break; 

谢谢。

回答

9

如果你想在当前执行的迭代之后停止完成(但目前的前迭代将被执行 - 即用较低的指标迭代= I)

Parallel.For(0, 100, (i, s) => 
    { 
     s.Break(); 
    }); 

,或者您想在此之前的电流和interations之后停止(以指数计= I)也应该停止

Parallel.For(0, 100, (i, s) => 
    { 
     s.Stop(); 
    }); 

但在这两种情况下,它是很好的做法,检查工作应中止如果迭代可能需要一段时间

s.ShouldExitCurrentIteration 

在这里阅读更多Parallel.For Method (Int32, Int32, Action(Int32, ParallelLoopState))

+0

我混淆了一些关于'Break'和'Stop'的概念 - 请重新阅读答案:) – 2010-08-21 20:18:20