GetTickCount /睡眠无法正常工作?或者它是GetTickCount精度问题?

时间:2015-08-06 08:22:23

标签: windows visual-c++ sleep gettickcount

查看以下代码:

tick1 = GetTickCount();
Sleep (100);
tick2 = GetTickCount ();

tick2-tick1大部分时间都小于100.我的期望是它应该总是100+。我的期望是错的吗?

1 个答案:

答案 0 :(得分:0)

看起来你的(和我的)期望是错误的。

我使用了更好的时机:

chrono::time_point<std::chrono::high_resolution_clock> tick1, tick2;
std::chrono::milliseconds timespan(100); // or whatever
for (int i = 0; i < 100; ++i)
{
    tick1 = chrono::high_resolution_clock::now();
    Sleep(100);
    tick2 = chrono::high_resolution_clock::now();
    std::chrono::duration<double> elapsed_seconds = tick2 - tick1;
    cout << elapsed_seconds.count() << endl;
}

大多数间隔为0.099XXX,2或3(满分100)0.1000XXX

推荐使用std :: this_thread :: sleep_for(...) Precise thread sleep needed. Max 1ms error也有类似的结果。 但错误不到1毫秒。你需要更好的精确度吗?