Если думал, что
system_clock — это просто текущее время. На деле это отсчёт от эпохи Unix (1 января 1970 года), и его поведение гораздо сложнее, чем кажется.⚡️ Когда вы вызываете
system_clock::now(), ОС читает значение из аппаратного таймера и возвращает разницу между текущим моментом и эпохой. Эта информация синхронизируется с NTP серверами для корректировки дрейфа кварцевого генератора.auto now = std::chrono::system_clock::now();
// Внутри: берётся значение из /dev/rtc или Windows' GetSystemTimeAsFileTime()
// И преобразуется в количество тиков с 1970-01-01 00:00:00 UTC
❗️ Критическая деталь: если пользователь выставит неправильное время в системе,
system_clock вернёт совершенно неправильное значение. Это не баг, это по дизайну — часы должны отражать реальное время.Для критичных операций, где важна монотонность, используй
steady_clock — он не зависит от системного времени и гарантирует, что каждый следующий вызов вернёт значение больше предыдущего.💡Вывод:
system_clock — это связь приложения с реальным миром через батарейку. Если нужна надёжность, используй другие часы.✏️ Если хочешь более подробный разбор темы времени в C++ ставь ⚡️ или пиши в комментариях ⤵️
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом