Sleep()
非常准确,例如,如果我想睡 10 个小时:
Sleep(36000000); // sleep for 10 hours
我的线程将等待整整 10 个小时(加上 Windows 需要唤醒我的线程的时间,可以忽略不计)。
但是,由于 Sleep()
会阻塞我的 UI 线程,所以我改用 Windows 定时器。那么 Windows 计时器是否与 Sleep()
一样准确?也就是说,它会等待整整 10 个小时(加上我的窗口过程接收 WM_TIMER
消息所需的时间)吗?
最佳答案
是的,Sleep()
和 SetTimer()
下的基本管道是相同的。通过调用 timeBeginPeriod()
可以看到一些东西,它会影响两者的准确性。它是时钟节拍中断处理程序,用于计算 sleep 和计时器的倒数,并在线程准备好再次运行时安排线程。当时间服务器重新校准系统时钟时,他们的 sleep /等待时间会调整。
关于c - Windows 计时器是否与 Sleep() 一样准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33452442/