查看以下代码:
tick1 = GetTickCount();
Sleep (100);
tick2 = GetTickCount ();
tick2-tick1大部分时间都小于100.我的期望是它应该总是100+。我的期望是错的吗?
答案 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毫秒。你需要更好的精确度吗?