Windows编程--线程的睡眠方式


线程也能告诉系统,它不想在某个时间段内被调度。这是通过调用Sleep函数来实现的:

VOID Sleep(DWORDdwMilliseconds);

该函数可使线程暂停自己的运行,直到dwMilliseconds过去为止。关于Sleep函数。

有下面几个重要问题值得注意:

1、调用Sleep,可使线程自愿放弃它剩余的时间片

2、系统将在大约的指定毫秒数内使线程不可调度。如果告诉系统,想睡眠100ms,那么可以睡眠大约这么长时间,但是也可能睡眠数秒钟或者数分钟。记住, Windows不是个实时操作系统。虽然线程可能在规定的时间被唤醒,但是它能否做到,取决于系统中还有什么操作正在进行。

3、可以调用Sleep,并且为dwMilliseconds参数传递INFINITE这将告诉系统永远不要调度该线程这不是一件值得去做的事情。最好是让线程退出,并还原它的堆栈和内核对象

4、可以将0传递给Sleep。调用线程将释放剩余的时间片,并迫使系统调度另一个线程。但是,系统可以对刚刚调用Sleep的线程重新调度。如果不存在多个拥有相同优先级的可调度线程,就会出现这种情况。

FangSH 2010-12-28

原文地址:https://www.cnblogs.com/fangshenghui/p/1926331.html