Информация об изменениях

Сообщение Re[2]: condition_variable.notify_all от 20.07.2020 11:56

Изменено 20.07.2020 11:57 Barbar1an

Re[2]: condition_variable.notify_all
Здравствуйте, qaz77, Вы писали:

Q>Здравствуйте, Barbar1an, Вы писали:


B>>я так и не понял из доков, если notify_all вызван до того как ожидатель вызвал wait , то что мы получим?

B>>дедлок?

B>>если дедлок то что это за фуфло такое? на чистом винапи можно легко избежать этой проблемы, потому что там если эвент устанорвлен, то Wait не будет ждать.


Q>То, что евент установлен, за это отвечает состояние этого объекта — некий bool, условно говоря.

Q>С условной переменной функции ожидания проверяют предикат. Если там проверяется какой-то bool, то будет как с виндовым эвентом.
Q>wait увидит true и не будет ждать. notify_one/notify_all только выполняют пробуждение ждущих потоков, чтобы те смогли проверить свои предикаты.

Q>В условной переменной можно использовать и более сложные состояния, опрос которых при вызове предиката защищен мьютексом.

Q>Например, аналог WaitForMultipleObjects можно сделать из условной переменной и массива bool.

да , но меня напрягает что для тривиальной задачи "подождать пока чтото закончится", мне нужно иметь ТРИ переменые: мутекс, кондишн и чтото для предиката
хотя это можно сделать одним винапишным событием
Re[2]: condition_variable.notify_all
Здравствуйте, qaz77, Вы писали:

Q>Здравствуйте, Barbar1an, Вы писали:


B>>я так и не понял из доков, если notify_all вызван до того как ожидатель вызвал wait , то что мы получим?

B>>дедлок?

B>>если дедлок то что это за фуфло такое? на чистом винапи можно легко избежать этой проблемы, потому что там если эвент устанорвлен, то Wait не будет ждать.


Q>То, что евент установлен, за это отвечает состояние этого объекта — некий bool, условно говоря.

Q>С условной переменной функции ожидания проверяют предикат. Если там проверяется какой-то bool, то будет как с виндовым эвентом.
Q>wait увидит true и не будет ждать. notify_one/notify_all только выполняют пробуждение ждущих потоков, чтобы те смогли проверить свои предикаты.

Q>В условной переменной можно использовать и более сложные состояния, опрос которых при вызове предиката защищен мьютексом.

Q>Например, аналог WaitForMultipleObjects можно сделать из условной переменной и массива bool.

да , но меня напрягает что для тривиальной задачи "подождать пока чтото закончится", мне нужно иметь ТРИ переменые: мутекс, кондишн и чтото для предиката
хотя это можно сделать одним винапишным Event'ом