Parallel Stop与Break的理解
2015-08-04 15:00
323 查看
普通for循环、foreach循环中有break/continue用于流程控制,在Parallel中也有用于流程控制的方法,即ParallelLoopState类的Stop/Break方法。
其中loopState是ParallelLoopState类实例,用于并行循环流程控制。
注意第10行:loopState.Stop(); 表示立刻退循环,不论后面要执行的循环是否满足i>5这个条件。
注意:不论是Break还是Stop方法,后面的return语句是必须的,否则当前循环体第13行的语句还是会被执行。
一、Stop方法用于退出Paraller循环
看下面的代码:var ltNum = new List<int>(); for (int i = 1; i <= 10; i++) { ltNum.Add(i); } Parallel.For(0, ltNum.Count, (i, loopState) => { if (i > 5) { loopState.Stop(); return; } Console.WriteLine("下标:{0},值:{1}", i, ltNum[i]); });
其中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 |
相关文章推荐
- -Dmaven.multiModuleProjectDirectory system propery is not set.
- Android4.2 keyguard源码架构,学习(一)!
- CentOS yum源默认安装路径
- shell脚本:批量添加用户,并设置随机字符为密码
- MapReduce过程、Spark和Hadoop以Shuffle为中心的对比分析
- Jetty和Tomcat的选择:按场景而定
- Jetty与tomcat的比较
- Jetty和tomcat的比较
- shell 统计nginx访问日志的前10
- Tomcat的基本配置
- Linux上手动编译apache
- 思科谈OpenDaylight
- 设计Windows shell中set 命令的人应该好好反省一下自己(用set处理串时请注意空格)
- linux之cp/scp命令+scp命令详解
- Windows和Linux双系统修改默认启动项、超时时间
- 将Linux的grub引导切换回BCD引导或Metro引导
- Linux新手安装完全教程
- kafka contrib包之hadoop-consumer分析
- top命令详解
- Linux下rz,sz与ssh的配合使用