【发布时间】:2017-12-24 20:58:06
【问题描述】:
即我在程序循环中使用std::this_thread::sleep_for(std::chrono::milliseconds(10));。
如果我有一个变量在此循环中递增以显示经过的秒数,我需要递增什么?
即float x = 0;
每一步:
x += 0.01
我尝试过 0.1、0.01、0.001,但它们似乎都太快或太慢。
【问题讨论】:
-
std::this_thread::sleep_for(std::chrono::milliseconds(10));可能不准确。您可能应该改用这种方法(示例中的一种):en.cppreference.com/w/cpp/thread/sleep_for -
我建议使用
sleep_until并使用绝对时间点。这样可以避免漂移。 -
您需要获取经过的睡眠时间的实际持续时间:在进入睡眠之前保存开始时间(例如通过调用
chrono::high_resolution_clock::now()),然后在睡眠后保存结束时间最后减去这些值。然后你可以将此持续时间转换为毫秒或秒或其他任何值。 -
您需要增加 10/1000 或 1/100 或 .01
-
seconds{1} - milliseconds{10}但是 Galik 关于sleep_until的评论是最好的建议。