admin管理员组

文章数量:1566983

1. 线程调度的一般过程

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

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

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

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

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

本文标签: 线程系统Windows