windows下的Sleep的实际休眠时间

默认情况下,windows一个时间片是16ms,所以sleep的实际休眠时间是16ms的整数倍

  • Sleep(1)实际休眠 16ms
  • Sleep(17)实际休眠 32ms
  • Sleep(33)实际休眠 48ms

同理:windows下的定时器执行间隔也是16ms的整数倍。

windows下提高精度的方法

  1. #include <mmsystem.h>
  2. #include <windows.h>
  3. #pragma comment(lib,"WinMM.Lib")
  4. timeBeginPeriod(1);
  5. Sleep(1);
  6. timeEndPeriod(1);

使用timeBeginPeriod() 和 timeEndPeriod()方法能够将精度提高到1ms,实际测试下来会有1ms左右的误差,并且长时间使用该方法会导致系统时间延迟。