QQ网名大全

如何正确的终止正在运行的子线程

如何终止运行时间超时的线程首先我们来看一下,让当前正在运行的子线程停止的所有方法1.任何一个线程调用exit2.pthread_exit3.pthread_kill4.pthread_cancel下面我们一一分析各种终止正在运行的程序的方法任何一个线程调用exit任何一个线程只要调用了exit都会导致进程结束,各种子线程当然也能很好的结束了,可是这种退出会有一个资源释放的问题.我们知道当一个进程终止时,内核对该进程所有尚未关闭的文件描述符调用close关闭,所以即使用户程序不调用close,在终止时内核也会自动关闭它打开的所有文件。没错,标准C++IO流也会很好的在exit退出时得到flush并且释放资源,这些东西并不会造成资源的浪费(系统调用main函数入口类似于exit(main(argc,argv))).表面上似乎所有的问题都能随着进程的结束来得到很好的处理,其实并不然,我们程序从堆上分配的内存就不能得到很好的释放,如new,delete后的存储空间,这些空间进程结束并不会帮你把这部分内存归还给内存.(本文初稿时,因基础不牢固,此处写错,事实上无论进程这样结束,系统都将会释放掉所有代码所申请的资源,无论是堆上的还是栈上的。(感谢ZKey的指导)。这种结束所有线程(包括主线程)的方式实际上在很多时候是非常可取的,但是对于针对关闭时进行一些别的逻辑的处理(指非资源释放逻辑)就不会很好,例如我想在程序被kill掉之前统计一下完成了多少的工作,这个统计类似于MapReduce,需要去每个线程获取,并且最后归并程一个统一的结果等等场景)
佚名
2024-05-30 16:09:16
最佳回答
类似问题(10)
  • 佚名
    2024-05-30 14:23:04

    五行命理是否正确?如何取名?

    希夷先生认为:鉴定迷信和科学的唯一标准是实践。无数的八字算命实例证明它是世界讫今最为精准的人体预测科学,它的理论体系的完善程度和操作的逻辑推理、辩证思维的严密都...

  • 佚名
    2024-05-30 14:52:27
  • 佚名
    2024-05-30 03:47:46

    如何让多个程序运行在一个进程的多个线程中?

    svchost.exe是一个属于微软Windows操作系统的系统程序,微软官方对它的解释是:Svchost.exe 是从动态链接库 (DLL) 中运行的服务的通...

  • 佚名
    2024-05-30 13:56:41

    如何正确进行倒闸开关的送电操作?

    倒闸操作的几个关键问题   误操作事故对电力系统、设备及人身的安全造成直接损害,给人民生命财产带来重大损失,甚至造成严重的政治影响,必须引起各级有关人员高度重视...

  • 佚名
    2024-05-30 08:00:00

    如何正确的评价杨振宁

    莫伟院士:“华人科学家,只有李政道和杨振宁最无私心”1980年10月,中国科学院副院长钱三强收到时在美国访学的中国物理学家周光召的来信,周光召在信中谈及了莫伟院...

  • 佚名
    2024-05-30 08:00:00

    如何正确理解真正的哲学

    百度的官方解释:哲学,是理论化、系统化的世界观,是自然知识、社会知识、思维知识的概括和总结,是世界观和方法论的统一。是社会意识的具体存在和表现形式,是以追求世界...

  • 佚名
    2024-05-30 08:00:00

    夜间开车如何正确运用灯光?

    1.夜间城市道路照明条件很好的情况下,使用近光灯。2.夜间照明条件不好的道路开启远光灯,但是会车时候要及时变换近光灯。3.经常检查自己的灯光状态:当遇到对面来车...

  • 佚名
    2024-05-30 08:00:00

    如何正确取下火罐?

    降温后可以拔! 降温压强变小!气体逸出~~接着就拔拔拔...^_^

  • 佚名
    2024-05-30 08:00:00

    如何正确泡脚 正确的泡脚方法泡脚材料及步骤

    每次泡脚时间至少在20分钟以上,30分钟左右最为适宜。泡脚到微微出汗是最好的,说明你的经络是畅通的,这也是证明你经络是否畅通的办法。如果你泡30分钟还不出汗,也...

  • 佚名
    2024-05-30 08:00:00

    如何中止一个正在执行中的方法(求助)C#

    主要做法有以下两种:1. 多线程操作,对线程进行定时,如果超时则停止。这个机制微软给出了BackgroundWorker,但是不够灵活不建议使用。优点是足够灵活...