Погрешность std::chrono::steady_clock

271
26 ноября 2016, 18:57

Мне необходимо каждый час выполнять какие то действия. Создаю что то типа таймера с помощью 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);
}
READ ALSO
Готовые решения GUI - наподобие Steam/Origin

Готовые решения GUI - наподобие Steam/Origin

Подскажите где можно найти готовые решения(С исходным кодом) с модерн дизайном интерфейса, как это делают в Steam/Origin

325
Диалоговое окно С++

Диалоговое окно С++

Написать программу, которая при нажатии клавиши ESC выводит окно-диалог о необходимости завершения программыВ окне диалога выводятся два...

463
Подключение библиотек C++

Подключение библиотек C++

Решил добавить gtest к решениюСоздал проект для тестов, подключил в него gtest

266
С++ Вывести дерево каталогов с компьютера в TreeView

С++ Вывести дерево каталогов с компьютера в TreeView

Добрый вечер, помогите найти ошибкуРазобранный на Delphi пример http://decoding

295