今天来通过实验,验证一个我一直以来模模糊糊的问题:线程创建后是否需要CloseHandle?
实验
我们首先创建一个Windows控制台程序,然后通过_beginthreadex来创建一个简单的线程。
示例代码如下
![a84b578d40c925eb1217ad2cf7efe908.png](https://i-blog.csdnimg.cn/blog_migrate/6385743ba41768e8cccbb1ae17f3bcab.jpeg)
线程计数
我们打开任务管理器,观察程序的线程计数,可以看到,当创建的线程正在执行时,线程计数为2,也即一个主线程加上我们创建的线程,当线程结束运行,线程计数降为1,也即只剩下主线程了。
![e4542bbcd363980859c413dfba361814.png](https://i-blog.csdnimg.cn/blog_migrate/99dfe1078967b5ed5099e2133b5e7c4b.jpeg)
应用程序句柄
打开ProcessExplorer工具,可以看到程序中打开的所有句柄,其中就用我们创建的线程句柄。
![fa9732d6e2fc9d4fec24d666d724b501.png](https://i-blog.csdnimg.cn/blog_migrate/55ebefe86b37fca1775edf23b8eebe39.jpeg)