我需要获取一段时间的时间。
something.start()
auto start = std::chrono::steadyt_clock::now();
while(something->is_valid())
{
// getting frames
auto end = std::chrono::steady_clock::now();
auto diff = end - start;
// do something with the frames
if(diff % 3 == 0) { /* do something with the something */ }
}
但是它得到的时间是每毫秒,我得到的时间和我的if语句运行过多。我不能使用std :: this_thread :: sleep_for(),因为我需要捕捉每一帧。我该怎么办?
答案 0 :(得分:4)
自C ++ 14起,您可以进行diff >= 3s
来查看差异是否等于或大于三秒(请参见this duration literal reference)。
否则,如果您坚持使用C ++ 11,请使用diff >= std::chrono::seconds(3)
。
请注意,这要求您在每次条件为真时重置start
:
if (diff >= 3s)
{
start = end;
// Do something with the something...
}
这是必需的,因为差异可以保持等于3
(因此diff % 3s == 0
为真)长达一秒钟,这意味着您的“做某事...”部分将执行许多操作错误的时间。