我正在制定計時系統,我將實施一個計時器班。Sleep()是否不準確?
#include <windows.h>
#include <stdio.h>
#include <time.h>
int main()
{
clock_t t1, t2;
t1 = clock();
Sleep(10);
t2 = clock();
printf("%i\n", (int)(t2 - t1));
return 0;
}
該程序應打印「10」,但打印「15」或「16」。我需要更準確的,這是少於1毫秒!建議? (也許select()的超時?)
注意:我已經在Windows 7旗艦版x86上運行此程序。用MinGW(C/C++)x86編譯的程序。
...甚至是timeBeginPeriod(1)。但是:更好地使用'TIMECAPS'結構的'wPeriodMin',由 填充[timeGetDevCaps](http://msdn.microsoft.com/en-us/library/windows/desktop/dd757627%28v=vs.85 %29.aspx)。 注意:結果週期取決於底層硬件。 – Arno
只問你需要什麼,使用1是浪費。最短的時間段並不重要,它已經自動調整,如果超過了你的需要,你就無法做任何事情。無論如何,最後一臺不支持它的機器在15年前就死了。 –
它比需要更多嗎?睡眠(10)的調用在中斷時可能不會總是發生**。在使用timeBeginPeriod(10)時,在下一個中斷之前5 ms調用Sleep(10)將導致15 ms的總睡眠。 – Arno