关于c++杀线程函数TerminateThread强烈不建议使用

 TerminateThread强烈不建议使用,因为这个函数的执行是异步的,你无法保证调用之后会立即退出,同时线程的堆栈均不会被销毁,导致内存泄露。如果调用了这个函数,请确保使用WaitForSingleObject来等待线程对象的结束。  参考链接:https://blog.csdn.net/kofandlizi/article/details/6458011https…

大家好,又见面了,我是你们的朋友全栈君。

 

TerminateThread强烈不建议使用,因为这个函数的执行是异步的,
你无法保证调用之后会立即退出,同时线程的堆栈均不会被销毁,
导致内存泄露。如果调用了这个函数,请确保使用WaitForSingleObject来等待线程对象的结束。
 

 

参考链接:

https://blog.csdn.net/kofandlizi/article/details/6458011

https://blog.csdn.net/shanzhizi/article/details/7731821

 

ThreadHandle = CreateThread(NULL,0,…..);
CloseHandel(ThreadHandle );//不会直接关闭线程,只是递减线程中的内核对象使用计数。当使用计数为0时,释放内核对象

 

一、Createthread:创建线程后如何回收

1.线程的生命周期就是线程函数从开始执行到return,这时候线程就自动回收了

2.而线程句柄是一个内核对象。我们可以通过句柄来操作线程,句柄生命周期是从CreateThread返回到你CloseHandle(),closehandle后便释放句柄(如果不closehandle句柄资源很快用光)

3.关闭一个句柄对象,表示不再使用该句柄操作线程(即不对线程做任何干预),但不会释放线程,线程释放按上述1其生命周期完成。

4.句柄操作线程例子,如WaitForSingleObject(ThreadHandle,1000)为等待线程1s的操作,假设判断10s后为线程超时的情况,不必调用TerminateThread杀线程,等其线程生命周期结束return即可

 

二、调用TerminateThread杀线程的致命问题:

TerminateThread终止线程后,堆栈没有被回收(注意连栈都没有被回收)

整个进程在分配和回收内存时,占用同一把锁,如果一个线程在使用该锁时被杀死(即临死前该线程在new或delete操作中,则其他线程就无法再使用new或delete了,表现为hang住

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124764.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PhpStorm 2021.1激活码 有效期2021 3月破解方法

    PhpStorm 2021.1激活码 有效期2021 3月破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    35
  • W3C网页标准_网页规范

    W3C网页标准_网页规范什么时W3C标准?网页的制作的主要标准是W3C制定的WEB技术标准,W3C:(worldwidewebconsortium)万维网联盟,万维网联盟创建于1994年,是web技术领域最具权威和影响力的国际中立性技术标准机构。WEB标准WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(structure),表现(presentation)和行为(behavior)。对应的标准也分为三方面:结构化标准语言主要包7777777777777777777777777777777.

    2022年9月17日
    0
  • Python3列表_python tuple

    Python3列表_python tuple列表列表特点:是一种序列结构,与元组不同,列表具有可变性,可以追加、插入、删除、替换列表中的元素新增元素appendappend添加一个对象,可以是任意类型a=['zhangsa

    2022年7月31日
    3
  • 2022年idea激活码[最新免费获取]

    (2022年idea激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月22日
    188
  • dos命令中DATE:~0,10输出日期格式名称格式/改为-

    dos命令中DATE:~0,10输出日期格式名称格式/改为-1、问题原因系统日期格式为/分隔,dos命令中%DATE:~0,10%的日期将会被当作多个文件夹处理2、解决方法1)、在控制面板中时钟、语言和区域中或者桌面右下角调整日期和时间格式,更改日历设置,日期格式由原来是yyyy/M/d改成yyyy-M-d2)、通用写法(年月日分开取):%DATE:~0,10%替换为%date:~0,4%%date:~5,2%%date:~8,2%3)、提前变…

    2022年9月20日
    0
  • PMF Model[通俗易懂]

    PMF Model[通俗易懂]转载自:http://blog.csdn.net/shenxiaolu1984/article/details/50372909Mnih,Andriy,andRuslanSalakhutdinov.“Probabilisticmatrixfactorization.”Advancesinneuralinformationprocessingsystems.2

    2022年6月16日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号