Может ли std :: this_thread :: sleep_for () иметь ложные пробуждения?

Обратите внимание, это не вопрос о std::condition_variable::wait_for(), Я знаю, что может бодрствовать.

Поведение моей программы предполагает, что ответом на этот вопрос является «Да», но документация STL для случая condition_variable вполне понятна. По крайней мере в cppreference.com, правильный ответ для this_thread — Нет.

Компилятор gcc 4.8.1, в случае, если это дефект.

8

Решение

В соответствующих разделах Стандарта 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).

Это подразумевает, что поведение, которое вы наблюдаете, не соответствует.

6

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


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