写程序的时候总是喜欢图省事,不去保存线程句柄,或者不去初始化线程句柄为NULL,当释放资源时候,关闭句柄倘若此时句柄为NULL,而调用了关闭句柄函数CloseHandle,这个函数的作用不是退出线程,而是减少对某一资源的计数,有人可能不相信,想想事件,信号量,互斥体,是如何被关闭的,我想你会认同我的看法,这个函数每被调用一次,其资源的使用个数减少1,而减到0为下限,倘若这个时候继续调用CloseHandle则会出现异常,很多程序在退出时,在OnClose中释放资源,出现程序会死掉的现象,就是这个原因。可能有人会迷惑,为什么要设置成这样呢,从0再减1返回一个错误码就可以了,何必弄成异常呢,倘若是这样,如果在应用程序某处继续打开这个资源,那么此时这个资源的计数将加1变成0,此时即使是操作正确也会返回失败。
线程句柄问题
最新推荐文章于 2021-12-09 13:23:07 发布