windows C Sleep()函数精度

windows C Sleep()函数精度

我很少使用windows的C弄正经工程,这下被坑了。

有如下测试程序,想做一个简单的库测试,Sleep()据说是毫秒级延迟。于是我很自然地使用1ms进行驱动

while(1)
    {
        MBx_Ticks(1000);  // 换算为微秒传入MBx驱动
        TestMemUpdate(1); // 毫秒传入测试函数
        Sleep(1);
    }

那当然是完全不准,和python一样不靠谱,可以添加如下代码进行实际延迟测试。

#include <windows.h>
#include <time.h>
SYSTEMTIME t1;

while(1)
    {
        MBx_Ticks(1000);  // 换算为微秒传入MBx驱动
        TestMemUpdate(1); // 毫秒传入测试函数
        Sleep(1);
        /* 打印毫秒时间戳 */
        GetSystemTime(&t1);
        printf("%ld\n", (int)t1.wMilliseconds);
    }

浅截取一小段如下,可以看到和1ms相去甚远,仅做测试是无所谓啦。

276
291
307
323
339
354
370
385
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...