我正在将一个最初为 Win32 API 编写的游戏移植到 Linux (好吧,将 Win32端口的 OS X 端口移植到 Linux)。
自从进程启动以来,我已经通过给出 u 秒来实现 QueryPerformanceCounter
:
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
再加上 QueryPerformanceFrequency()
给出的频率常数为1000000,在我的机器上工作得很好,从程序启动以来,我得到了一个包含 uSeconds
的64位变量。
因此,我不想发现如果内核是以某种方式编译的,或者类似的方式,它的工作原理是不同的。然而,我对它不能移植到 Linux 以外的其他东西感到满意。