使用QueryPerformanceFrequency()和QueryPerformanceCounter()进行精确延时:
void MySleep(DWORD dwUs)
{
LARGE_INTEGER dwStart;
LARGE_INTEGER dwCurrent;
LARGE_INTEGER dwFrequence;
LONGLONG counter;
if (!QueryPerformanceFrequency( &dwFrequence))
{
return;
}
QueryPerformanceCounter(&dwStart);
counter = dwFrequence.QuadPart * dwUs / 1000 / 1000;
dwCurrent = dwStart;
while((dwCurrent.QuadPart - dwStart.QuadPart) <counter )
{
QueryPerformanceCounter(&dwCurrent);
}
}