Мне необходимо каждый час выполнять какие то действия. Создаю что то типа таймера с помощью 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);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите где можно найти готовые решения(С исходным кодом) с модерн дизайном интерфейса, как это делают в Steam/Origin
Написать программу, которая при нажатии клавиши ESC выводит окно-диалог о необходимости завершения программыВ окне диалога выводятся два...
Решил добавить gtest к решениюСоздал проект для тестов, подключил в него gtest
Добрый вечер, помогите найти ошибкуРазобранный на Delphi пример http://decoding