Проблема, с которой я столкнулся, заключается в том, что std::this_thread::sleep_for
на самом деле использует системные часы для расчета времени пробуждения (по крайней мере, в Windows), а не постоянные часы.Это создает проблемы при изменении системных часов.Например, если у меня есть цикл ожидания с коротким интервалом ожидания (скажем, 50 мс), а затем я возвращаю системные часы на 2 минуты, цикл останавливается на 2 минуты вместо 50 мс.Это нелогично.Я ожидаю, что это будет 50 мс (+ небольшое отклонение).В любом другом случае эта функция не имеет смысла, если можно разбудить в случайное время.
В документации по функции sleep_for
сказано, что можно использовать системные часы, но я полагаю, что этонедостаток в стандарте.По крайней мере, должен быть выбор типа часов для использования.Или (лучше) стандарт должен требовать, чтобы часы были устойчивыми.
Итак, учитывая такой недостаток, знаете ли вы какой-либо другой независимый от платформы способ спать в течение определенного количества времени?