В Википедии есть этот комментарий к сигналу (на мой взгляд, аналогичный широковещательная передача):
часто также приемлемо снять блокировку перед передачей сигнала. В зависимости от реализации потоков, их порядок может иметь последствия с приоритетом планирования. (Некоторые авторы [кто?] вместо этого выступают за то, чтобы отдавать предпочтение снятию блокировки перед передачей сигнала.) Реализация потоков должна документировать любые специальные ограничения на этот порядок.
Реализация std cpp переменной std::condition_variable вызывает notify_one после снятия блокировки:
Код: Выделить всё
data = "Example data";
// send data to the worker thread
{
std::lock_guard lk(m);
ready = true;
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78787862/correct-use-of-boost-notify-all-in-interprocess-communication-on-linux-kernels[/url]
Мобильная версия