我用了Sleep函数 API说明是能精确到每毫秒 但是精确度太低了 能够起作用的sleep(int i) 中i必须得15以上才有效果
然后又做了一个空循环 这个延时效果很好 但是把CPU全占了
可能还要植入其他的算法 所以求助各位兄台了 还有什么比较精确的定时或者延时的方法吗?我还没试settimer 但据说精确度也不高
然后又做了一个空循环 这个延时效果很好 但是把CPU全占了
可能还要植入其他的算法 所以求助各位兄台了 还有什么比较精确的定时或者延时的方法吗?我还没试settimer 但据说精确度也不高
#include <time.h>
#include <stdio.h>
ULONG GetTimeDis(struct tm first, struct tm second) //计算两次时间差
{
return abs((first.tm_hour * 3600 + first.tm_min * 60 + first.tm_sec)
- (second.tm_hour * 3600 + second.tm_min * 60 + second.tm_sec));
}void Delay(ULONG ulMicroSeconds)
{
LARGE_INTEGER timeStop;
LARGE_INTEGER timeStart;
LARGE_INTEGER Freq;
ULONG ulTimeToWait; if (!QueryPerformanceFrequency( &Freq ))
return; ulTimeToWait = Freq.QuadPart * ulMicroSeconds / 1000 / 1000; QueryPerformanceCounter ( &timeStart ); timeStop = timeStart; while( timeStop.QuadPart - timeStart.QuadPart < ulTimeToWait )
{
QueryPerformanceCounter( &timeStop );
}
}int main(void)
{
struct tm timeStart, timeEnd; _getsystime(&timeStart);// Delay(1000 * 1000 * 3); //3秒
_getsystime(&timeEnd); //
printf("用时:%d秒\n", GetTimeDis(timeStart, timeEnd));// return 0;
}
呵呵 试了 延时效果很好
但是CPU的使用量很大
呵呵 可能这个太过于精确了。。