windows Sleep函数长时间运行时间偏移问题
本帖最后由 shenlanzifa 于 2014-03-21 16:34:20 编辑
我在while(true)循环中使用sleep函数,运行的时间长了之后,发现在毫秒级别,时间差值会越来越大。
代码如下:
while (true)
{
GetLocalTime( &sys );
printf( " thread:%d:%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n", i
,sys.wYear,sys.wMonth,sys.wDay
,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds
,sys.wDayOfWeek);
printf("\n");
Sleep(60000);//休眠60s
}
刚开始的时间是:2014/03/21 16:06:23.
938
运行了一段时间后变成:2014/03/21 16:31:23.
951
该如何消除这种毫妙级的时间差呢?
------解决方案--------------------这个,不算奇怪吧,一来 Sleep() 函数是有精度限制的,二则你这代码除了 Sleep() 之外还有其它代码有消耗啊,再则还可能有其它程序和系统开销的。
------解决方案--------------------Sleep的精度≈15毫秒。