Как узнать, что 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
но это просто означает, что время ожидания истекло.
1 ответ
В качестве решения я выбрасываю исключение по истечении времени ожидания и воссоздаю объект MessageQueueReceiver.