Re[6]: C++11: Синхронизация - Условные переменные и ложные проб
От: B0FEE664  
Дата: 27.03.19 21:27
Оценка:
Здравствуйте, netch80, Вы писали:

BFE>>>>О каком ресурсе (состоянии) идёт речь?

N>>>О том, который защищается данной конкретной парой mutex + CV.
BFE>>Речь идёт о notifyOne()?
N>Нет, здесь — в общем случае.
А причём тут общий случай, если речь идёт о condition_variable ? condition_variable вообще не обязана быть связанной с какими-то разделяемыми данными.

N>>>>>Если кто-то спросит, почему не делать такую синхронизацию, при которой нет такой проблемы... можно сделать. Например, при notifyOne() указывать, кого именно notify.

N>>>>>Но тогда другая проблема — а что, если этот решил вообще выйти из игры?
BFE>>>>Это как? У нити нет способа "выйти из игры", она же заблокирована.
N>>>С чего вдруг? В данный момент она может, например, быть занята обработкой предыдущего задания.
BFE>>Нить, которая занята обработкой предыдущего задания, пропустит notifyOne() в соответствии с текущей спецификацией.
N>И поэтому этот гипотетический метод нужно ещё больше дорабатывать.

В каком смысле дорабатывать? Должна проснутся одна из тех ниток, которые заблокированы, а те, которые работают должны продолжать работать. Это в соответствии с текущей спецификацией.
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.