Задача следующая: эмулируется среда передачи данных (радио эфир). Все процессы "подключенные" к среде должны иметь возможность передать данные всем остальным процессам. Ну и соответствеено все должны иметь возможность слушать (принимать данные). Причем желательно, чтобы слушающие были заблокированы на чем-нибудь, а не тупо крутились в цикле.
Сейчас все это организовано как TCP-сервер, который принимает соединения и при приходе данных из любого из соединений - отсылает их на все остальные. Есть сомнения в производительности такого решения (очень желательно, чтобы процессы как можно быстрее получили данные).
Красиво подходит разделяемая память, но при работе только с ней не возможна блокировка ожидающих процессов. А простого механизма заблокировать и разблокировать процессы я не вижу.
Идеи?