Работа со временем как с безразмерной величиной может приводить к недоразумениям и ошибкам конвертации временных единиц измерения:
> _– Слушай, ты не помнишь, мы в sleep передаем секунды или миллисекунды?_
>
> _– Блин, оказывается у меня в часе 360 секунд, ноль пропустил._
Для избежания таких ошибок предусмотрена библиотека chrono (namespace std::chrono). Она была добавлена в C++11 и дорабатывалась в поздних стандартах. Теперь все логично:
using namespace std::chrono;
int find_answer_to_the_ultimate_question_of_life()
{
//Поиск ответа
std::this_thread::sleep_for(5s); //5 секунд
return 42;
}
std::future f = std::async(find_answer_to_the_ultimate_question_of_life);
//Ждем максимум 2.5 секунд
if (f.wait_for(2500ms) == std::future_status::ready)
std::cout << "Answer is: " << f.get() << "\n";
else
std::cout << "Can't wait anymore\n";
Библиотека реализует следующие концепции:
* интервалы времени – `duration`;
* моменты времени – `time_point`;
* таймеры – `clock`.[Читать дальше →][1]
[1]:
https://habrahabr.ru/post/324984/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut