每个线程都有一个线程内核对象,内核对象里包含各种信息
该对象里有一个暂停计数,当暂停计数大于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时间