Правильное использование boost notify_all в межпроцессном взаимодействии в ядрах LinuxLinux

Ответить
Anonymous
 Правильное использование boost notify_all в межпроцессном взаимодействии в ядрах Linux

Сообщение Anonymous »

tl;dr следует использовать boost notify_all() до или после снятия блокировки?
В Википедии есть этот комментарий к сигналу (на мой взгляд, аналогичный широковещательная передача):

часто также приемлемо снять блокировку перед передачей сигнала. В зависимости от реализации потоков, их порядок может иметь последствия с приоритетом планирования. (Некоторые авторы [кто?] вместо этого выступают за то, чтобы отдавать предпочтение снятию блокировки перед передачей сигнала.) Реализация потоков должна документировать любые специальные ограничения на этот порядок.

Реализация 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»