3

如果我运行 Sleep(10000) 之类的东西,并且系统时钟在此期间发生变化,那么线程是否仍会休眠 10 秒的挂钟时间,或者更少或更多?即 Sleep() 函数是否将毫秒转换为硬件滴答?

4

2 回答 2

9

Sleep() 独立于挂钟时间。它基于用于线程调度的相同计时器。

但是,由于系统时钟的频率以及在超时过去后您实际被安排运行的时间,您通常不会恰好睡 10 秒。

于 2010-06-15T15:41:47.477 回答
3

我所知道的任何地方都没有记录它,但是是的,您可以放心地假设。如果不这样做,那将是非常具有破坏性的,日光转换每年发生两次。它记录了等效的内核函数 KeDelayExecutionThread 的 Interval 参数:

指定发生等待的绝对或相对时间,以 100 纳秒为单位。负值表示相对时间。绝对过期时间跟踪系统时间的任何变化;相对到期时间不受系统时间更改的影响。

于 2010-06-15T16:01:46.887 回答