Как спать в течение фиксированного периода времени, на который не влияют настройки системных часов в Visual C ++ 2012

Я использовал std::this_thread::sleep_for(std::chrono::seconds(1)); спать на секунду. Я обнаружил, что если я отрегулирую системное время в обратном направлении во время сна, время сна увеличится на то время, которое я только что скорректировал.

Но std::this_thread::sleep_for() должен работать независимо от системного времени в отличие std::this_thread::sleep_until()что, вероятно, должно демонстрировать поведение, упомянутое выше.

Когда я смотрю на реализацию Visual C ++ 2012 std::this_thread::sleep_for(), Я нашел

template<class _Rep,
class _Period> inline
void sleep_for(const chrono::duration<_Rep, _Period>& _Rel_time)
{   // sleep for duration
stdext::threads::xtime _Tgt = _To_xtime(_Rel_time);
sleep_until(&_Tgt);
}

Так sleep_for() реализуется с использованием sleep_until() в Visual C ++ 2012. Я искал стандарт C ++ 11, и он не запрещает такую ​​реализацию. Итак, как я могу заснуть в течение фиксированного периода времени, на который не влияют настройки системных часов?

2

Решение

Вы, вероятно, должны использовать очереди таймера это точные относительные таймеры. Чтобы сделать таймер ожидаемым, подпрограмма таймера должна вызвать событие, как в этот пример.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]