Я пытаюсь внедрить систему обмена сообщениями между двумя процессами с помощью boost.interprocess и message_queue.
Первая проблема: одну очередь можно использовать только для отправки сообщений из процесса А в В, а не из В в А.
Таким образом, я использую две очереди в обоих процессах. Процесс A прослушивает / получает в Queue-A и отправляет в Queue-B; Процесс B прослушивает / получает в очереди-B и отправляет в очереди-A.
Я не могу заставить систему работать с обеими очередями. В зависимости от порядка процессов, вызывающих boost::interprocess::message_queue(boost::interprocess::open_or_create,...)
или
boost::interprocess::message_queue(boost::interprocess::open_only,...)
либо одна Очередь работает, либо другая, либо ни одна.
Даже если Процесс A создает Очередь-A и Очередь-B, а Процесс B открывает только Очередь-A и Очередь-B. В одном направлении boost :: interprocess застревает в функции receive и никогда не просыпается.
1) Можно ли заставить двунаправленный обмен сообщениями / сигнализацию работать с interprocess :: message_queue, используя две очереди в каждом процессе?
2) Есть ли лучший способ получить двунаправленный обмен сообщениями без использования message_queue?