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毫秒。