c++ 多线程:线程句柄可以提前关闭,但是线程并没有关闭
2023-09-11 14:16:45 时间
很多程序在创建线程都这样写的: ThreadHandle = CreateThread(NULL,0,.....); CloseHandel(ThreadHandle ); 1,线程和线程句柄(Handle)不是一个东西,线程是在cpu上运行的.....(说不清楚了),线程句柄是一个内核对象。我们可以通过句柄来操作线程,但是线程的生命周期和线程句柄的生命周期不一样的。线程的生命周期就是线程函数从开始执行到return,线程句柄的生命周期是从CreateThread返回到你CloseHandle()。 2,线程句柄是一种内核对象,系统维护着每一个内核对象,当每个内核对象引用记数为0时,系统就从内存中释放该对象,CloseHandle就是将该线程对象的引用记数减1。所有的内核对象(包括线程Handle)都是系统资源,用了要还的,也就是说用完后一定要closehandle关闭之,如果不这么做,你系统的句柄资源很快就用光了。 只是关闭了一个线程句柄对象,表示我不再使用该句柄,即不对这个句柄对应的线程做任何干预了。并没有结束线程。
相关文章
- C++ 递归遍历文件夹内的所有文件
- [c++菜鸟]《Accelerate C++》习题解答
- C++多线程编程(入门实例)
- C++程序设计:原理与实践(进阶篇)16.6 关联容器
- C++多线程编程分析-线程间通信
- 【Python】调用C/C++ SDK/SO动态库
- C++11 lambda表达式是如何实现的?
- 《C++多线程编程实战》——1.3 程序结构、执行流和运行时对象
- 《C++多线程编程实战》——1.8 事件处理器和消息传递接口
- 《C++多线程编程实战》——2.3 解释进程模型
- 《C++多线程编程实战》——.7 线程模型的实现
- 《C++并发编程实战》——1.3 在C++中使用并发和多线程
- 基于QT(C++) 实现哈夫曼压缩(多线程)【100010471】
- C++ unordered_map和map性能比较
- C++11 std::unique_lock与std::lock_guard区别及多线程应用实例
- 单元测试之C/C++
- 165、【动态规划】leetcode ——337. 打家劫舍 III:记忆化递归+动态规划(C++版本)
- 114、【回溯算法】leetcode ——77. 组合:回溯法+剪枝优化(C++版本)
- Linux环境下多线程C/C++程序的内存问题诊断
- Windows下C++多线程编程(入门实例)