15,471
社区成员
发帖
与我相关
我的任务
分享
// Precision.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
// convert between double and LARGE_INTEGER
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
#define ULi2Double(x) ((double)((x).HighPart) + (double)((x).LowPart))
int main(int argc, char* argv[])
{
LARGE_INTEGER freq;
BOOL bHighPerf = ::QueryPerformanceFrequency(&freq);
if (bHighPerf)
{
double dFreq = Li2Double(freq);
// Initial count
LARGE_INTEGER startCount;
::QueryPerformanceCounter(&startCount);
double dStartCount = Li2Double(startCount);
do
{
LARGE_INTEGER curCount;
::QueryPerformanceCounter(&curCount);
double dCurCount = Li2Double(curCount);
double dElapsedTime = (dCurCount-dStartCount)/dFreq;
if (dElapsedTime >= 0.04) // 40ms to be broken
break;
}while(true);
}
else
{
// ::WaitForSingleObject(..., interval);
}
return 0;
}