线程的handle用处:

线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问。该内存块是一种数据结构,它的成员负责维护对象的各种信息(eg: 安全性描述,引用计数等)。

CloseHandle()

在CreateThread成功之后会返回一个hThread的handle,且内核对象的计数加1,CloseHandle之后,引用计数减1,当变为0时,系统删除内核对象。

但是这个handle并不能完全代表这个线程,它仅仅是线程的一个“标识”,系统和用户可以利用它对相应的线程进行必要的操纵。如果在线程成功创建后,不再需要用到这个句柄,就可以在创建成功后,线程退出前直接CloseHandle掉,但这并不会影响到线程的运行。

不执行CloseHandle() 带来的后果:

若在线程执行完之后,没有通过CloseHandle()将引用计数减1,在进程执行期间,将会造成内核对象的泄露,相当与句柄泄露,但不同于内存泄露, 这势必会对系统的效率带来一定程度上的负面影响。但是,请记住,当进程结束退出后,系统仍然会自动帮你清理这些资源。但是在这里不推荐这种做法,毕竟不是 一个良好的编程习惯!
( 应用程序运行时,有可能泄露内核对象,但是当进程终止运行时,系统能确保所有内容均被正确地清除。另外,这个情况是用于所有对象,资源和内存块,也就是说,当进程终止时,系统将保证不会留下任何对象。)

TerminateThread(

CloseHandle(),TerminateThread(),ExitThread()的区别相关推荐

  1. CloseHandle TerminateThread ExitThread的区别

    线程的handle用处: 线程的handle是指向"线程的内核对象"的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问.该内存块是一种数据结构,它的成 ...

  2. CloseHandle()、TerminateThread()、ExitThread()的区别

    CloseHandle().TerminateThread().ExitThread()的区别

  3. MFC 线程的退出方法

    A.线程函数的返回(推荐用法)(需要考虑的是catch/运行标志/错误处理等方法) B.ExitThread函数(不推荐) C.同一个进程或者另一个进程中的线程调用TerminateThread函数( ...

  4. windows多线程同步互斥--总结

    2019独角兽企业重金招聘Python工程师标准>>> 秒杀多线程面试题系列 参考JustDoIT -- 大部分内容 <Windows核心编程>线程同步对象速查表 对象 ...

  5. devexpress 创建窗口句柄时出错_实验一 线程的创建和撤销

    实验内容:编写和调试一个程序,实现Windows系统环境下通过API函数进行线程创建与撤销. 实验目的: (1) 熟悉Windows系统提供的线程创建和撤销系统调用: (2) 掌握Windows系统环 ...

  6. 操作系统实验一:线程的创建与撤销

    实验一:线程的创建与撤销 2.1.1 实验目的 (1)熟悉Windows系统提供的线程创建与撤销系统调用. (2)掌握Windows系统环境下线程的创建与撤销方法. 2.1.2 实验准备知识 1.线程 ...

  7. 操作系统实验一、线程的创建与撤销

    实验一:线程的创建与撤销 一.实验目的 (1)熟悉windows系统提供的线程创建与撤销系统调用. (2)掌握windows系统环境下线程的创建与撤销方法. 二.实验准备 线程的概念 (1)线程(th ...

  8. 服务级后门自己做——创建服务

    以往大多数的木马/后门都是通过修改系统ini文件(比如Win.ini,System.ini)或修改注册表的RUN值来实现自启动的,还有更简单的是修改Autobat.exe(老大,地球不适合你,你还是回 ...

  9. 对一个windows2000注册表项的粗略分析(转)

    对一个windows2000注册表项的粗略分析(转)[@more@] [HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Executio ...

  10. 操作系统实验:Windows进程管理

    实验项目名称: Windows进程管理 一.实验目的 1.学习windows系统提供的线程创建.线程撤销.线程同步等系统调用: 2.利用C++实现线程创建.线程撤销.线程同步程序: 3.完成思考.设计 ...

最新文章

  1. codeforce708C:树形dp+二次扫描
  2. 如何使用小数据集对大模型进行微调(迁移学习)-微迁移
  3. recyclerview 滑动到当前_Android recyclerview的滑动到指定的item
  4. Python if控制流语句
  5. Python的ASCII, GB2312, Unicode , UTF-8区别
  6. swoole会合并到php吗,thinkphp整合swoole
  7. mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap...
  8. 误差函数拟合优缺点_欠拟合、过拟合及如何防止过拟合
  9. 苹果终于迷途知返?还是指纹识别更香...
  10. PHP学习笔记【27】--服务端存储技术Session
  11. 每天进步一点点——mysql——Percona XtraBackup(innobackupex)
  12. 前端开发【WEUI框架H5网页开发】—— WEUI+Node.js+fis3 项目开发
  13. 解除极域电子教室软件控屏的方法
  14. python开发录屏软件_Python移动端录屏库
  15. STM32 RTOS创建消息队列的两种方式(解决数据类型问题)
  16. 如何正确学习和使用设计模式
  17. 以太坊_Mist客户端下载及安装
  18. 漫画:程序员带娃日常(1)
  19. iphone app中读取本地txt,csv文件 转载
  20. notepad++查看二进制.class文件——HexEditor插件(64/32位)安装教程

热门文章

  1. Firebug 网络监视器使用教程英文
  2. 用R做GLM的Summary相关指标解释——以Poission regression为例
  3. 苹果vs剪辑下载_Vlog教程 | 如何在手机剪辑app中添加自己的音乐?
  4. 马未都说收藏:陶瓷篇(1)历史朝代、陶器
  5. 在Linux系统中 测试DNS,Linux系统中dns服务器网络设置及测试
  6. 【算法学习笔记】50.字符串处理 SJTU OJ 1361 丁姐的周末
  7. 为微信小程序扩展自定义babel编译功能
  8. python案例3:货币转换---初级
  9. 蜀门EVP文件加解密源码
  10. mac系统怎么给文件夹加密?mac文件夹加密教程