【线程生命周期】

今天看到一段这样的代码

    HANDLE hThread = CreateThread(NULL, 0, add, &a, 0, NULL);
    hmutext = CreateMutex(NULL, false, L"huchiti");
    CloseHandle(hThread);

刚刚创建线程,居然关闭了。。。百思不得其解。。。
百度之下,还扯出了线程的生命周期的问题。。。

线程和线程句柄

简单的说,关闭了线程句柄 != 关闭了线程,其两者的生命周期并不同步。
线程句柄的类型是什么呢,VC源码里面这样写到 typedef void* HANDLE;可以简单的把线程句柄看成是可以指向任何类型的指针,通过线程句柄来操控线程;
线程的生命周期:线程函数开始执行到return
线程句柄的生命周期:CreateThread() -> CLoseHandle()

在线程创建后马上调用CloseHandle()是个良好的做法,这里不会影响线程的执行,就是因为即使你close了这个handle,它的内部记数也不为零. 但如果你不关,在线程结束后,那个线程对象将滞留于内存中,也就是说你有handle leak.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值