当前位置: 代码迷 >> C# >> Parallel Stop与Break的懂得
  详细解决方案

Parallel Stop与Break的懂得

热度:494   发布时间:2016-05-05 03:06:58.0
Parallel Stop与Break的理解

    普通for循环、foreach循环中有break/continue用于流程控制,在Parallel中也有用于流程控制的方法,即ParallelLoopState类的Stop/Break方法。

    一、Stop方法用于退出Paraller循环

    看下面的代码:

 1             var ltNum = new List<int>(); 2             for (int i = 1; i <= 10; i++) 3             { 4                 ltNum.Add(i); 5             } 6             Parallel.For(0, ltNum.Count, (i, loopState) => 7             { 8                 if (i > 5) 9                 {10                     loopState.Stop();11                     return;12                 }13                 Console.WriteLine("下标:{0},值:{1}", i, ltNum[i]);14             });

    其中loopState是ParallelLoopState类实例,用于并行循环流程控制。

    注意第10行:loopState.Stop(); 表示立刻退循环,不论后面要执行的循环是否满足i>5这个条件。

    二、Break用于根据条件过滤循环

    假如将上面第10行代码改为:loopState.Break(); 则表示后面满足i>5的循环不再执行,但其它的循环体还是要执行的。

    注意:不论是Break还是Stop方法,后面的return语句是必须的,否则当前循环体第13行的语句还是会被执行。

    三、总结

    下面用一个表格比较Parallel中的Stop/Break方法与普通循环中的continue/break语句的类比。

ParrallelLoopState实例方法Stop()Break()
作用退出循环,后面的循环体均不执行满足相应条件的循环体不执行
相当于普通循环的语句break;continue

 

  相关解决方案