Windows Timer是否与Sleep()一样精确?
Sleep()
是非常准确的,所以例如,如果我想睡10个小时:
Sleep(36000000); // sleep for 10 hours
我的线程将等待10个小时(加上Windows需要唤醒我的线程的时间,这可以忽略不计)。
但是,由于Sleep()
会阻塞我的UI线程,所以我使用Windows定时器。 那么Windows计时器是否与Sleep()
一样精确? 也就是说,它会等待10个小时(加上我的窗口过程接收WM_TIMER
消息所需的时间)吗?
是的, Sleep()
和SetTimer()
下面的基本管道是相同的。 通过调用timeBeginPeriod()
可以看到的东西,它会影响两者的准确性。 它是时钟滴答中断处理程序,它可以计算睡眠和定时器,并在线程准备好再次运行时计算线程。 当系统时钟被时间服务器重新校准时,他们的睡眠/等待时间被调整。
上一篇: Is a Windows Timer as accurate as Sleep()?
下一篇: What would cause WaitForSingleObject with finite timeout not to return?