Windows系统的线程调度

1. 线程调度的一般过程

一个线程在创建的时候,内核会为其创建一个内核对象,在该内核对象中有一个成员变量叫做上下文结构,其中存储的是CPU最后运行该线程时CPU寄存器的值,这样当该线程再次被调度运行的时候,CPU就读取上下文结构中的数据,实现继续对该线程执行。

大体的调度过程是:CPU每隔20ms左右就会检查一遍所有的线程内核对象,通过其结构中的暂停计数器的值,判断是否可被调度,如果可以被调度,则加载该线程,读取其上下文结构,继续执行该线程未完的代码。

如果所有运行的线程都具有相同的优先级,那么线程调度的过程就如上面所示。但是由于windows操作系统是一个抢先式的操作系统,因此任何一个线程都有可能在时间片未到的时候被其他的线程打断。

2. 暂停和恢复线程的运行

当使用CreateThread创建一个线程的时候,内核创建的内核对象中将会有一个暂停计数器的变量,用来表示当前的线程或者进程暂停的次数,因为当一个线程或进程创建的时候,它需要一定时间去初始化,因此开始时该计数器为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值