-1

查看以下代码:

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

tick2-tick1 大多数时候都小于 100。我的期望是它应该总是 100+。我的期望错了吗?

4

1 回答 1

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(...) 。Max 1ms error也有类似的结果。但误差小于1ms。您需要更高的精度吗?

于 2015-08-06T15:46:32.823 回答