Получите истекшее время в секундах в C ++ - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно получить истекшее время от времени.

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 (), потому что мне нужен каждый кадр, чтобы поймать.Как я могу сделать это pararell?

1 Ответ

0 голосов
/ 10 декабря 2018

Начиная с C ++ 14 вы могли бы сделать diff >= 3s, чтобы увидеть, была ли разница равна или больше трех секунд (см. этот буквенный эталон продолжительности ).

В противном случае, если вы 'Застряв в C ++ 11, затем используйте diff >= std::chrono::seconds(3).

. Обратите внимание, что для этого требуется сбросить start каждый раз, когда выполняется условие:

if (diff >= 3s)
{
    start = end;
    // Do something with the something...
}

Это необходимо, потому чторазница может оставаться равной 3 (и, следовательно, diff % 3s == 0 будет истинно) в течение целой секунды, что означает, что ваша часть «Сделай что-то ...» будет многократно ложно выполняться.

...