首页 文章

获取经过的时间只需几秒钟

提问于
浏览
0

我需要从一段时间内获得经过的时间 .

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 回答

  • 4

    从C 14开始,你可以做 diff >= 3s 以查看差异是否等于或大于3秒(见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 为真)最多一秒,这意味着你的"Do something..."部分将错误地执行多次 .

相关问题