windows核心编程之线程暂停和恢复

每个线程都有一个线程内核对象,内核对象里包含各种信息
该对象里有一个暂停计数,当暂停计数大于0的时候,线程暂停
DWORD SuspendThread(
HANDLE hThread //线程句柄
);//这个函数可以暂停线程,使得暂停计数加1
DWORD ResumeThread(
HANDLE hThread // 线程句柄
);//这个函数使得线程的暂停计数减1,当线程的暂停计数为0时,线程变为可调度状态
所以,这里有个问题,如果线程暂停了3次,要想让线程恢复运行,必须要恢复相应的次数

线程的暂停其实就是线程不可调度,那么让线程不可调度的方法还有那些呢
VOID Sleep(
DWORD dwMilliseconds // 睡眠时间(毫秒)
);

强制系统重新分配CPU时间
sleep(0)
SwitchToThread()
这两者之间的差别是,sleep只能让优先级和它相等或者比它高的线程获得CPU时间,而SwitchToThread可以让低优先级的线程获得CPU时间

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值