Я должен написать приложение на C в Unix так, чтобы N
дочерние процессы были разветвлены от родительского процесса, и я буду отправлять сообщения этим дочерним элементам, а дети должны отправлять сообщения друг другу.
Однако проблема в том, что мне нужно отправлять сообщения конкретному целевому дочернему процессу. то есть родитель отправит ребенку 1, ребенок 1 отправит ребенку 2, ... и ребенок n
отправит 1
(по кругу).
Проблема в том, что, если я создаю только одну очередь сообщений, любой из n
дочерних элементов может удалить сообщение из очереди (поскольку любой из них может запускаться после родительского процесса из-за планировщика ядра), поэтому сообщение будет удалено из очереди в неправильном процессе!
В моем приложении будет макс. 1 сообщение в очереди за раз. Единственное решение, которое приходит мне в голову, - это создавать n
различные очереди сообщений и передавать сообщения в соответствующую очередь, чтобы конкретный целевой процесс мог ее получить. Но я думаю, что должно быть более законное решение.
Есть идеи?
Ограничения: каналы между процессами не разрешены, я знаю, что mq здесь неэффективен. Я тоже буду их реализовывать, оба требуются. P.S. Это своего рода домашнее задание (черт возьми, я создатель http://canyoudomyhomework.com), однако это не просто домашнее задание, ИМХО сложный вопрос.)