Как узнать, что 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.

Другие вопросы по тегам