今天要用到一個微秒級的定時函數,到網上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;
}
免得以后要用的時候又不知道那里去找,方便自己也方便大家^_^??? 又避免重復發明輪子^_^

/**//********************************************************************
????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;
}![]() | |||||
| ? |


收藏一下
我支持你
謝謝大家的支持!