查看以下代码:
tick1 = GetTickCount();
Sleep (100);
tick2 = GetTickCount ();
tick2-tick1 大多数时候都小于 100。我的期望是它应该总是 100+。我的期望错了吗?
查看以下代码:
tick1 = GetTickCount();
Sleep (100);
tick2 = GetTickCount ();
tick2-tick1 大多数时候都小于 100。我的期望是它应该总是 100+。我的期望错了吗?
看起来你(和我)的期望是错误的。
我使用了更好的时机:
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。您需要更高的精度吗?