【发布时间】:2011-03-04 01:29:50
【问题描述】:
如果我运行 Sleep(10000) 之类的东西,并且在此期间系统时钟发生变化,那么线程是否仍会休眠 10 秒的挂钟时间,还是更少或更多? IE。 Sleep() 函数是否将毫秒转换为硬件滴答声?
【问题讨论】:
如果我运行 Sleep(10000) 之类的东西,并且在此期间系统时钟发生变化,那么线程是否仍会休眠 10 秒的挂钟时间,还是更少或更多? IE。 Sleep() 函数是否将毫秒转换为硬件滴答声?
【问题讨论】:
Sleep() 独立于挂钟时间。它基于用于线程调度的相同计时器。
但是,由于系统时钟的频率以及您实际被安排在超时后运行的时间,您通常不会恰好睡 10 秒。
【讨论】:
据我所知,它在任何地方都没有记录,但是是的,您可以放心地假设是这样。如果不这样做,那将是非常具有破坏性的,日光转换每年发生两次。 记录了等效的内核函数 KeDelayExecutionThread 的 Interval 参数:
以 100 纳秒为单位指定等待发生的绝对时间或相对时间。负值表示相对时间。绝对过期时间跟踪系统时间的任何变化;相对过期时间不受系统时间变化的影响。
【讨论】: