码迷,mamicode.com
首页 > Windows程序 > 详细

CWinThread类,使用后要不要使用CloseHandle释放内核

时间:2018-06-04 21:36:25      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:head   返回   mina   The   int   begin   read   查看   变量   

在VC++中用AfxBeginThread()开启线程的时候,返回的是CWinThead类的指针。但是使用后是否应该用CloseHandle释放内核资源呢?

在《Windows核心编程》中说在使用ExitThread()函数终止线程的时候虽然系统资源会被清理掉,但是C/C++资源(如C++类资源)不会被销毁。使用TerminateThread函数终止线程时,该线程的堆栈资源是不会被销毁的。并建议最好的使线程结束的方式就是使线程函数正常退出。但是这里不知道是否要用CloseHandle来关闭系统内核对象,也就是句柄。以及是否需要delete CWinThread指针。

经查MSDN,在CWinThread类中有个m_bAutoDelete的变量,该变量是在线程结束的时候是否Delete掉自己,而这个值默认是设为TRUE的。delete的时候是会执行该类的析构函数的,在析构函数中应该是会销毁系统资源的。如下图,m_bAutoDelete的值是1。

技术分享图片

当线程结束的时候,在查看CWinThread类中的值,发现是乱码之类的,这时其实该CWndThread指针所指的对象已经被delete掉了。如下图:

技术分享图片

CWinThread类,使用后要不要使用CloseHandle释放内核

标签:head   返回   mina   The   int   begin   read   查看   变量   

原文地址:https://www.cnblogs.com/konglongdanfo/p/9135317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!