创建线程后马上CloseHandle(threadhandle)起什么作用
2024-10-21 12:42:34
原文:http://www.cnblogs.com/eddyshn/archive/2010/04/14/1711674.html
HANDLE threadhandle = CreateThread(NULL, 0, RecvThreadProc, NULL, NULL, NULL);
CloseHandle(threadhandle);
不明白为什么创建线程后,要马上把线程的句柄关闭,这样做的目的是什么? 这样做会杀掉线程吗?
解答:
创建线程后返回了线程句柄,新创建的线程内核对象的使用计数是2,一个是线程本身,一个是创建线程的线程,创建线程的线程closehandle后,新的线程的内核对象使用计数为1,当这个新线程结束运行后内核对象的使用计数还要减1,这时内核对象的使用计数是0,则系统会自动删除新线程的内核对象,这是正常的处理流程。
你如果不显示的调用closehandle,则新线程结束运行后,由于内核对象使用计数为1,所以不会删除内核对象,会造成内存泄露,不过当整个进程结束时操作系统会自动关闭该进程的所有的内核对象包括这个新线程的内核对象,所以你不调用closehandle问题不大,只是在你的进程运行的时候会造成内存泄露,进程结束后系统是会自动清理的。
最新文章
- 浅谈敏捷组织中PMO的人物
- 程序设计入门——C语言 第1周编程练习 1逆序的三位数(5分)
- Karma:1. 集成 Karma 和 Jasmine 进行单元测试
- Android Touch(3)View的touchDelegate
- oracle使用pfile或者spfile启动
- Part 14 Mathematical functions in sql server
- CRegKey 注册表操作
- 手机字段存储报错 :Warning Code : 1264 Out of range value for column 'buyer_tpl' at row 1
- 前端 MVC 变形记
- java 利用反射构造泛型类
- 实验六:通过grub程序引导本地磁盘内核启动系统(busybox)
- 用Flow编写更好的js代码
- python进阶(二) 多进程+协程
- eclipse中启动项目报内存溢出问题通过修改配置解决
- nginx 耗时原因定位总结
- ModuleNotFoundError: No module named 'win32api'
- powerdesign、navacat、ER图、uml、类图、时序图
- android 开发 对话框Dialog详解
- 源码分析篇 - Android绘制流程(三)requestLayout()与invalidate()流程及Choroegrapher类分析
- ListBox使用