[#] Основные концепции библиотеки chrono (C++)
habrabot(difrex,1) — All
2017-03-29 14:30:04


Работа со временем как с безразмерной величиной может приводить к недоразумениям и ошибкам конвертации временных единиц измерения:


> _– Слушай, ты не помнишь, мы в 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