我需要从一段时间内获得经过的时间 .
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 */ }
}
但它得到的时间在每一个ms我得到的时间和我的if语句运行太多 . 我不能使用std :: this_thread :: sleep_for()因为我需要 grab 每一帧 . 我怎么能这样做呢?
1 回答
从C 14开始,你可以做
diff >= 3s
以查看差异是否等于或大于3秒(见this duration literal reference) .否则,如果您遇到C 11,请使用
diff >= std::chrono::seconds(3)
.请注意,这要求您在每次条件为真时重置
start
:这是必需的,因为差异可以保持等于
3
(因此diff % 3s == 0
为真)最多一秒,这意味着你的"Do something..."部分将错误地执行多次 .