热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

并行计算中的停止stop和跳出break

由于并行计算中的停止stop和跳出break,跟单线程中有所不同,所以需要重点理解一下.停止stop,因为是多线程,所以当调用stop时,此循环体没有立

由于并行计算中的停止stop和跳出 break,跟单线程中有所不同,所以需要重点理解一下.

停止stop,因为是多线程,所以当调用stop时,此循环体没有立即退出,还会有一两个线程会继续执行。

所以有可能会达不到我们的要求。

例如:

            List list = new List();

            for (int i = 0; i <20; i++)

            {

                list.Add(i);

            }

            Console.WriteLine("Stop");

            Parallel.For(0, list.Count,

                (i, LoopState) =>

                {

                    Thread.Sleep(500);

                    Console.WriteLine(i);

                    if (i > 5) LoopState.Stop();

                  //  if (LoopState.IsStopped == false)

                    {

                        Console.WriteLine(" ............." + i);

                    }

                }

                );

执行结果可能如下:

并行计算中的停止stop和跳出 break

当i=6时,调用stop方法,

但直到i=10,循环体才停止。

因此,我们要用LoopState.IsStopped属性来判断是否调用了stop方法,如果调用,则对满足条件下的,才会继续执行。

执行结果如下(为可能结果),符合我们的要求

并行计算中的停止stop和跳出 break

break,跳出当前循环,经过执行结果我们发现,也存在其他线程未跳出循环的情况

所以不能只依靠break了,我们自己要把可以执行的代码放在if代码段中。

Console.WriteLine("Break");

            Parallel.For(0, list.Count,

                (i, LoopState) =>

                {

                    Console.WriteLine(i);

                    Thread.Sleep(500);

                    if (i > 5) LoopState.Break();

                    {

                        Console.WriteLine("----------" + i);

                    }

                }

                );

改为

Console.WriteLine("Break");

            Parallel.For(0, list.Count,

                (i, LoopState) =>

                {

                    Console.WriteLine(i);

                    Thread.Sleep(500);

                    if (i > 5) LoopState.Break();

  else//加上else

                    {

                        Console.WriteLine("----------" + i);

                    }

                }

                );

并行计算中的停止stop和跳出 break

L


推荐阅读
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • NN,NearestNeighbor,最近邻KNN,K-NearestNeighbor,K最近邻KNN分类的思路:分类的过程其实是直接将测试集的每一个图片和训练集中的所有图片进行比 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 似乎有两种不同的方法可以将字符串转换为字节,如对typeerror的回答所示:str不支持缓冲区接口。这些方法中哪一种比较好或更适合用Python& ... [详细]
  • des算法php,Des算法属于加密技术中的
    本文目录一览:1、des是什么算法2、80分求 ... [详细]
author-avatar
时-_尚微视点
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有