vc 如何释放线程资源

 我来答
func7
推荐于2016-01-25 · 超过23用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:42.9万
展开全部

线程函数返回 这个线程就结束了 线程的内核对象就处于激发(有信号)状态。

线程在创建后会返回一个线程内核对象(线程句柄),通过该内核对象可以强制结束该线程。

如果线程创建后内核对象未使用也未关闭,这个内核对象资源就泄漏了。

内核对象有引用次数的概念:线程创建,内核对象的引用次数是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); //无泄漏,线程函数结束内核对象销毁
}
任明星Ming
2014-04-03 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1154万
展开全部
让线程自己退出就可以释放了,如果调用EndThread等强制关闭线程函数,将会导致线程的资源泄露。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式