在 ubuntu 12.04 x64 主机上运行 KVM Windows 2008 RC2 x64 来宾时遇到了一些问题。具体来说,与时钟时间相比,Win32 调用 QueryPerformanceCounter 似乎会定期产生不可靠的结果。我正在运行类似于此的循环:
auto zero = tbb::tick_count::now ();
while (true) {
std::cout << datetime::now ()
<< " delta: " << (tbb::tick_count::now () - zero).seconds ()
<< std::endl;
zero = tbb::tick_count::now ();
Sleep (1000);
}
上面, tbb::tick_count 是对 QueryPerformanceCounter 的薄包装,而 datetime::now() 使用系统时钟。定期,例如至少每 3 分钟一次,增量约为 42 秒。系统时钟总是非常准确。
关于可能导致这种情况的任何想法?