Windows线程启动到消亡的运行状态

线程在被创建出来后会经历,启动->运行->挂起->休眠->消亡几个状态。启动和消亡在以前的帖子里都已经讲烂了,在这里主要说下运行,挂起,还有休眠的状态。


运行:CPU的抢栈式的运行方式,导致了线程在运行过程中会来回切换。这样就会不停的读取CONTEXT,大致流程是:保存CONTEXT->切换线程执行->切换回来->读取CONTEXT。注意了,这里用了个词叫切换,其实不然,运行过程中线程也是处于一种挂起状态,只是这种挂起状态和接下来要说的线程挂起状态有所不同,为了达到区分的目的。这里跟换了用词,切换。


挂起:SuspendThread(HANDLE)挂起线程,ResumeThread(HANDLE)结束挂起。这里可以调用这两个API来实现线程的挂起,传递的参数都是要挂起的线程句柄。

挂起->其实就是对线程里的暂停计算+1,退出挂起的时候,将暂停计数-1.,当暂停计数不为0的时候,线程是不会继续运行的,所以,一切都卡住了。

强调下:这里和运行中的挂起有什么区别了。运行中的挂起不会对暂停计数有操作,强调。。。。不会对暂停计数有操作。


休眠:休眠其实就是我们的Sleep(time),休眠状态代表着在休眠的这段时间里,我的线程停止运作,不会被调用。

注意Sleep(0)这个用法,这个用法表示的意思是将线程时间片给别人运作,线程虽然休眠的时间没有,但是CONTEXT依然会被重新装载一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值