Как узнать, что boost :: interprocess :: message_queue удален из системы?

Я создаю оболочку отправителя / получателя на основе boost::interprocess::message_queue для отправки сообщений от одного процесса и получения их другим, вы можете просмотреть источники здесь: https://gist.github.com/onto/c322bb0a33433b775966

Возникла проблема, если я уничтожил объект отправителя, message_queue был удален из системы, но получатель не был уведомлен об этом. Как это исправить?

Если message_queue не существует при создании MessageQueueReceiver объекта, он выдает исключение, это нормальное поведение для меня, но если я удалю message_queue из системы, boost::interprocess::message_queue::receive ничего не выдаст, boost::interprocess::message_queue::timed_receive вернет false, но это просто означает, что время ожидания истекло.


person Anton Lashkov    schedule 01.05.2015    source источник


Ответы (1)


В качестве решения я генерирую исключение по истечении времени ожидания и воссоздаю объект MessageQueueReceiver.

person Anton Lashkov    schedule 18.05.2015