vc++之调用CloseHandle的原因
来源:互联网 发布:汶上县网络问政平台 编辑:程序博客网 时间:2024/06/01 13:37
线程创建后,立刻调用CloseHandle的原因
HANDLE threadhandle = CreateThread(NULL, 0, RecvThreadProc, NULL, NULL, NULL);
CloseHandle(threadhandle);
不明白为什么创建线程后,要马上把线程的句柄关闭,这样做的目的是什么? 这样做会杀掉线程吗?
解答:
创建线程后返回了线程句柄,新创建的线程内核对象的使用计数是2,一个是线程本身,一个是创建线程的线程,创建线程的线程closehandle后,新的线程的内核对象使用计数为1,当这个新线程结束运行后内核对象的使用计数还要减1,这时内核对象的使用计数是0,则系统会自动删除新线程的内核对象,这是正常的处理流程。
你如果不显示的调用closehandle,则新线程结束运行后,由于内核对象使用计数为1,所以不会删除内核对象,会造成内存泄露,不过当整个进程结束时操作系统会自动关闭该进程的所有的内核对象包括这个新线程的内核对象,所以你不调用closehandle问题不大,只是在你的进程运行的时候会造成内存泄露,进程结束后系统是会自动清理的。
如果你创建线程后连续两次调用CloseHandle会怎样呢?系统会立即删除新线程的内核对象,线程会立即终止么?不会的,为什么?我也没弄清楚.................
- vc++之调用CloseHandle的原因
- 调用CloseHandle和 ExitThread
- VC++6.0 之NEW调用的BUG
- 线程的CloseHandle
- 线程的CloseHandle()
- 线程的CloseHandle
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- CloseHandle函数的使用
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- CloseHandle()函数的使用
- closehandle()的使用
- 缓存、缓存算法和缓存框架简介
- 【phpcms-v9】phpcms-v9中添加广告联盟代码
- asp.net序列化json三种方式 jquery ajax json
- 【OpenCV学习笔记】之二:Mat使用的潜规则----对数据类型敏感
- Build and use dylib on iOS
- vc++之调用CloseHandle的原因
- System.map详解
- OpenWRT文章翻译之(一)----OpenWRT Buildroot简介
- TITAN
- JS阻止用户默认事件的发生
- 2012-06-14 19:16 ios消息推送机制原理与实现
- POJ1094 字母排序(拓扑排序)
- ubuntu下乱码问题解决方案
- 实时数据库系统及其特征