Мне необходимо каждый час выполнять какие то действия. Создаю что то типа таймера с помощью std::chrono::steady_clock, в while проверяю или пришло время выполнять действия. Судя по логам за каждый час набегает смещение вызова этих действий, а за 6 часов смещение становится больше 1 секунды. От куда берется это смещение? Разве std::chrono::steady_clock не подходит для такой задачи?
std::chrono::milliseconds PeriodCall(1000 * 60 * 60);
std::chrono::steady_clock::time_point TimeNextCall; // Время следующей сработки таймера
while (true)
{
std::chrono::milliseconds time_delta = std::chrono::duration_cast<std::chrono::milliseconds>(TimeNextCall - std::chrono::steady_clock::now());
if (time_delta.count() <= 0)
{
TimeNextCall += PeriodCall;
/*
...Выполняем действия
*/
}
Sleep(1);
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники