【发布时间】:2012-12-31 01:35:38
【问题描述】:
根据 MSDN 文章 Game Timing and Multicore Processors,QueryPerformanceFrequency() 和 QueryPerformanceCounter() 函数据说是最好的。但如果不支持它,我可以使用 timeGetTime() 或 GetTickCount()。
- QueryPerformanceFrequency() 是否与 CPU 时钟相同,还是使用自己的时钟或具有自己的频率且不会随时间变化的东西?
- 如果频率随时间随机变化会怎样(尤其是在笔记本电脑中)
- 如何使用 SetThreadAffinityMask 函数? (我看到的一些代码使用该函数将其更改为“1”,然后使用计数器并将掩码再次更改为旧值。这是为什么?是否正确?)
- 在案例/问题 1 中仅使用一次 QueryPerformanceFrequency() 函数并通过除以频率来计算增量时间值是否正确?还是用case 2解决了?
【问题讨论】:
-
哪里不支持?
-
请说明您正在开发的软件类型:例如桌面应用、3D 游戏……
-
@AndyT:以防万一:P。我有几个应用程序。我的另一个项目是儿童监视器的游戏和 Windows 服务。在儿童监控系统中,我正在计算时间,以防孩子可以更改系统时间:P.
-
QPF 无论如何都会提供一个常数。 但是: 它的来源是硬件,因此
constant QPF只是一个估计值。请参阅this SO 问题以进一步了解。 -
有一个很好的答案,有人删除了吗???
标签: windows performance winapi timer multicore