我用了Sleep函数 API说明是能精确到每毫秒  但是精确度太低了  能够起作用的sleep(int i) 中i必须得15以上才有效果
   然后又做了一个空循环 这个延时效果很好 但是把CPU全占了 
   
   可能还要植入其他的算法 所以求助各位兄台了 还有什么比较精确的定时或者延时的方法吗?我还没试settimer 但据说精确度也不高

解决方案 »

  1.   

    楼主见这个例子程序#include <windows.h>
    #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;
    }
      

  2.   


    呵呵 试了 延时效果很好  
    但是CPU的使用量很大 
    呵呵  可能这个太过于精确了。。