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