Обратите внимание, это не вопрос о std::condition_variable::wait_for()
, Я знаю, что может бодрствовать.
Поведение моей программы предполагает, что ответом на этот вопрос является «Да», но документация STL для случая condition_variable вполне понятна. По крайней мере в cppreference.com, правильный ответ для this_thread — Нет.
Компилятор gcc 4.8.1, в случае, если это дефект.
В соответствующих разделах Стандарта C ++ (параграфы [thread.thread.this] / 7-9) ничего не говорится о ложных пробуждениях для std::this_thread::sleep_for
в отличие, например, от за std::condition_variable::wait_for
,
template <class Rep, class Period> void sleep_for(const chrono::duration<Rep, Period>& rel_time);
7 Последствия: Блокирует вызывающий поток на относительное время ожидания (30.2.4), указанное
rel_time
,8 синхронизация: Никто.
9 Броски: Исключения, связанные с тайм-аутом (30.2.4).
Это подразумевает, что поведение, которое вы наблюдаете, не соответствует.