Как Condition_variable::wait_for() справляется с ложными пробуждениями? ⇐ C++
Как Condition_variable::wait_for() справляется с ложными пробуждениями?
На различных платформах допускается ложное пробуждение. Чтобы противостоять этому, мы пишем ниже механизм цикла:
while(ContinueWaiting()) cv.wait (блокировка); // cv — это объект `std::conditional_variable` То же самое понятно и для conditional_variable::wait_until().
Но посмотрите на пример ниже:
const auto period = Returns_10_секунды(); в то время как (! Предикат ()) cv.wait_for(блокировка, продолжительность); Представьте, что ложное пробуждение произошло через 1 секунду. Тайм-аут еще не истек.
Будет ли он ждать еще 10 секунд? Это привело бы к бесконечному циклу, чего, я уверен, не должно произойти. Из исходного кода внутренне wait_for() вызывает wait_until().
Я хочу понять, как wait_for() справляется с ложными пробуждениями?
На различных платформах допускается ложное пробуждение. Чтобы противостоять этому, мы пишем ниже механизм цикла:
while(ContinueWaiting()) cv.wait (блокировка); // cv — это объект `std::conditional_variable` То же самое понятно и для conditional_variable::wait_until().
Но посмотрите на пример ниже:
const auto period = Returns_10_секунды(); в то время как (! Предикат ()) cv.wait_for(блокировка, продолжительность); Представьте, что ложное пробуждение произошло через 1 секунду. Тайм-аут еще не истек.
Будет ли он ждать еще 10 секунд? Это привело бы к бесконечному циклу, чего, я уверен, не должно произойти. Из исходного кода внутренне wait_for() вызывает wait_until().
Я хочу понять, как wait_for() справляется с ложными пробуждениями?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Если данные, возвращаемые Curl_exec, не являются ложными, может ли это быть пустая строка?
Anonymous » » в форуме Php - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-