Повысьте межпроцессное сообщение и очередь сообщений - PullRequest
1 голос
/ 04 августа 2011

Я использую boost :: interprocess :: message_queue для связи между процессами.В одном из них я использую

::CoInitializeEx( 0, COINIT_MULTITHREADED );

для настройки COM-вызовов.Я не могу получить доступ ни к каким очередям, созданным после этого вызова из другого процесса, или в этом отношении того же самого процесса, но до вызова CoInit.

Я не очень знаком с COM и их моделью потоков, вызов CoInit былдобавил сотрудник.Что я могу сделать, чтобы решить эту проблему?

Вот небольшой фрагмент для иллюстрации:

boost::interprocess::message_queue m_queue1( boost::interprocess::open_or_create, "testqueue", 256, sizeof(int) );
::CoInitializeEx( 0, COINIT_MULTITHREADED );
boost::interprocess::message_queue m_queue2( boost::interprocess::open_only, "testqueue" );

В этом примере конструктор второй очереди выдаст исключение, так как думает, что очередь несуществовать.Если я удаляю вызов CoInit, он работает нормально.

EDIT: Boost версия 1.46.1.Вызов CoInit в приведенном выше фрагменте кода возвращает S_OK.

...