Parallel.For中断

abe*_*nci 7 .net c# parallel-processing parallel-extensions

假设你有一个1000个随机整数的数组,你需要循环它以找到数字68,例如.

在四核CPU上使用新的Parallel.For可以大大提高速度,使每个核心只能工作250个数组项.

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

if (integerArray[i] == 68)

   break;
Run Code Online (Sandbox Code Playgroud)

谢谢.

Las*_*olt 9

如果要在当前执行迭代完成后停止(但是在执行当前WILL之前的迭代 - 即,具有较低索引的迭代= i)

Parallel.For(0, 100, (i, s) =>
    {
        s.Break();
    });
Run Code Online (Sandbox Code Playgroud)

或者如果你想在此前的当前和交互之后停止(就index = i而言)也应该停止

Parallel.For(0, 100, (i, s) =>
    {
        s.Stop();
    });
Run Code Online (Sandbox Code Playgroud)

但在两种情况下,如果迭代可能需要一段时间,检查工作是否应该中止是一个好习惯

s.ShouldExitCurrentIteration
Run Code Online (Sandbox Code Playgroud)

在此处阅读更多内容Parallel.For方法(Int32,Int32,Action(Int32,ParallelLoopState))