Linux: Multi IP C Сигнал пробуждения или события (C ++) - PullRequest
0 голосов
/ 23 января 2020

В Linux, в C ++ мне нужен способ, чтобы несколько клиентских процессов ожидали события, а затем один основной процесс вызывал все остальные клиентские процессы при возникновении события. Мне не нужно передавать какие-либо данные между процессами. Я хочу сделать это БЕЗ розеток или Boost! Единственный способ, которым я знаю, как это сделать, - создать именованный канал. Клиентские процессы могут использовать вызов poll() для блокировки на именованном канале. Как только событие должно быть запущено, основной процесс может выполнить запись в именованный канал x раз, где x - число клиентских процессов, ожидающих в именованном канале.

Кажется, должен быть лучший способ сделать это. Например, основной процесс должен записать '1' в именованный канал, и все клиентские процессы будут запущены. В ядре у нас есть вызовы типа wait_event_interruptible() и wake_up_all(), но что эквивалентно пользовательскому пространству?

Как только клиентский процесс получает событие, он выполняет некоторую обработку, а затем go возвращается к ожиданию, пока не сработает другое событие.

...