在进行多线程编程时,经常需要进行一些线程的延时,而对于Sleep 是不准确的,所以需要获取震片时间钟进行延时。代码如下:
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;
__try
{
if (!QueryPerformanceFrequency( &Freq ))
return;
ulTimeToWait = Freq.QuadPart * ulMicroSeconds / 1000 / 1000;
QueryPerformanceCounter ( &timeStart );
timeStop = timeStart;
while( timeStop.QuadPart - timeStart.QuadPart < ulTimeToWait )
{
QueryPerformanceCounter( &timeStop );
}
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
AfxMessageBox( "延迟错误") ;
}
}