vc 如何释放线程资源
2个回答
展开全部
线程函数返回 这个线程就结束了 线程的内核对象就处于激发(有信号)状态。
线程在创建后会返回一个线程内核对象(线程句柄),通过该内核对象可以强制结束该线程。
如果线程创建后内核对象未使用也未关闭,这个内核对象资源就泄漏了。
内核对象有引用次数的概念:线程创建,内核对象的引用次数是2,CloseHandle会使引用次数-1,线程结束内核对象的引用次数也会-1并处于激发状态,引用次数为0时释放资源并销毁。
DWORD __stdcall aa(void *p)
{
return 0;
}
void main()
{
CreateThread(0, 0, aa, 0, 0, 0); //内核对象泄漏
}
void main()
{
HANDLE hthread = CreateThread(0, 0, aa, 0, 0, 0);
CloseHandle(hthread); //无泄漏,线程函数结束内核对象销毁
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询