//常规
void sleep_micro_seconds(ULONG ulMicroSeconds)
{
LARGE_INTEGER varFrequency = {0}, varCounter_Start = {0}, varCounter_End = {0};
double dFrequency = 0;
LONGLONG llCount = 0;
::QueryPerformanceFrequency(&varFrequency);
dFrequency = varFrequency.QuadPart/1.0;
::QueryPerformanceCounter(&varCounter_Start);
while(true)
{
::QueryPerformanceCounter(&varCounter_End);
llCount = varCounter_End.QuadPart - varCounter_Start.QuadPart;
if((llCount/dFrequency) > (ulMicroSeconds/1000000.0) )
{
break;
}
}
}
//优化
void sleep_micro_seconds(ULONG ulMicroSeconds)
{
LARGE_INTEGER varFrequency = {0}, varCounter_Start = {0}, varCounter_End = {0};
LONGLONG llCount = 0;
::QueryPerformanceFrequency(&varFrequency);
::QueryPerformanceCounter(&varCounter_Start);
while(true)
{
::QueryPerformanceCounter(&varCounter_End);
llCount = varCounter_End.QuadPart - varCounter_Start.QuadPart;
if(1000000*llCount > ulMicroSeconds*varFrequency.QuadPart)
{
break;
}
}
}
int main(int argc, char* argv[])
{
sleep_micro_seconds(40);
}