今天要用到一个微秒级的定时函数,到网上search下,找了几个都不能用,我晕,无奈,还是自己动手比较好,赶紧贴出来。

免得以后要用的时候又不知道那里去找,方便自己也方便大家^_^    又避免重复发明轮子^_^



/********************************************************************
    Created:    2006/09/02
    FileName:   t.c
    Author:        Liu Qi
    
    Purpose:    测试微秒级延时
********************************************************************
*/



#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;
}
Google