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

能使用TerminateThread结束线程的地方: 线程函数简单,只做简单数据处理不涉及资源分配,无动态对象。但还是需要慎用。

参考链接:https://blog.csdn.net/qq_35097289/article/details/80240702

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

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

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

参考MSDN:

MSDN 2005 原文:TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code and its initial stack is not deallocated. DLLs attached to the thread are not notified that the thread is terminating.

【C/C++笔记】之TerminateThread函数结束线程的危险性相关推荐

  1. Delphi 如何解决在DLL的入口函数中创建或结束线程时卡死

    先看一下使用Delphi开发DLL时如何使用MAIN函数, 通常情况下并不会使用到DLL的MAIN函数,因为delphi的框架已经把Main函数隐藏起来 而工程函数的 begin  end 默认就是M ...

  2. windows结束线程的三种方式

    windows 结束线程有三种方式 一.让线程函数执行到 return 二.在线程函数内调用 ExitThread 三.调用 TerminateThread 其中前两种方式比较类似,它们都是通过修改某 ...

  3. Windows进程与线程学习笔记(五)—— 模拟线程切换

    Windows进程与线程学习笔记(五)-- 模拟线程切换 ThreadSwitch代码分析 ThreadSwitch.cpp ThreadCore.h ThreadCore.cpp 总结 Thread ...

  4. python多线程结束线程_Python多线程和Office第2部分

    python多线程结束线程 This is the second and final part of the series. You can find the first part of the bl ...

  5. 再读苹果《Threading Programming Guide》笔记(二):线程配置与Run Loop

    本文为再读苹果<Threading Programming Guide>笔记第二篇,作者付宇轩表示:如今关于iOS多线程的文章层出不穷,但我觉得若想更好的领会各个实践者的文章,应该先仔细读 ...

  6. python笔记2(函数 面向对象 文件编程 上下文管理器)

    记录python听课笔记 文章目录 记录python听课笔记 一,函数 1.介绍python里的函数 2.用户自定义函数 3.变量的作用域 4.参数的传递 5.参数的默认值 6.向函数内部批量传递数据 ...

  7. python结束线程池正在运行的线程_python之线程与线程池

    #进程是资源分配的最小单位,线程是CPU调度的最小单位.每一个进程中至少有一个线程.#传统的不确切使用线程的程序称为只含有一个线程或单线程程序,而可以使用线程的程序被称为多线程程序,在程序中使用一个线 ...

  8. 线程的退出 java_(转)Java结束线程的三种方法

    背景:面试过程中问到结束线程的方法和线程池shutdown shutdownnow区别以及底层的实现,当时答的并不好. 线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便 ...

  9. Java结束线程的三种方法

    转载自https://blog.csdn.net/xu__cg/article/details/52831127 线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁 ...

最新文章

  1. 深圳、长沙高校排名飙升,清北坐实亚洲大学Top2,留学深造还去啥新港日| 泰晤士2020亚洲大学榜...
  2. C/C++中存储类型
  3. html背景幻灯片图片,CSS3全屏背景图像幻灯片
  4. LeetCode 1290 二进制链表转整数
  5. [html] 说说你对H5的SharedWorker的理解,它有什么运用场景?
  6. 数据库中主键的选择和使用
  7. 调用$.ajax不成功,jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法...
  8. 杀毒软件可以查杀所有计算机病毒吗,好的杀毒软件可以查杀任何病毒,对还是错?...
  9. 一个JavaScript的小问题
  10. MySQL卸载及安装
  11. 基于Canvas和HTML+CSS3构建JavaScript弹幕库
  12. 酷q点歌机器人软件_【酷q机器人下载】酷q机器人官方下载 V5.14.8A 最新版-七喜软件园...
  13. dsoframer java_基于DsoFramer控件的Office编辑控件
  14. Unity中更改鼠标光标样式
  15. 定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性
  16. html中img图片绝对路径时无法正常显示的问题
  17. linux install 文件,linux命令安装msi文件
  18. 厦门大学计算机学院离散数学复试,2019年厦门大学计算机考研复试办法
  19. 如何用电脑控制手机屏幕,写工作日志
  20. 用C#调整Excel 的行高和列宽

热门文章

  1. 河北大学数学模型作业战争飞行计划
  2. 【一文学会MQTT协议和mosquitto】
  3. TransR 论文笔记
  4. 数据分析-Tableau01-柱状图、堆积柱状图、直方图系列
  5. 微信小程序使用本地存储
  6. 计算机科学创新大赛,计算机学院大学生创新项目入围挑战杯大赛
  7. ssl 客户端无法显示证书
  8. SV独立客户端无法登陆问题
  9. Ubuntu-KCF/DSST算法无人机跟踪仿真/实物保姆级教程
  10. MogaFX—汇率能充分反映货币压力吗?