Могу ли я использовать очереди сообщений повышения для связи потоков - PullRequest
4 голосов
/ 22 августа 2010

Я порождаю несколько рабочих потоков из основного потока. Могу ли я создать message_queue для каждого потока из основного потока и отправить сообщения из основного потока. Я спрашиваю об этом, потому что очереди сообщений предназначены для межпроцессного взаимодействия.

Нужно ли рассматривать что-то конкретное в отношении этого

1 Ответ

4 голосов
/ 06 января 2011

Как указано Boost Message Queue, не основанное на очереди сообщений POSIX? (и упомянуто в документации). Если вы говорите о потоках, у вас одинаковое адресное пространство и вам не нужны межпроцессные возможности.

Я бы посоветовал использовать выбранный вами контейнер STL в моем классе-обертке (отношение has-a) и окружить установщик / получатель элементами синхронизации (изменяемое исключение / мьютекс), как указано в Как создать механизмы синхронизации в управляемых сегментах разделяемой памяти? Отсутствующая сериализация объектов является преимуществом в производительности по сравнению с межпроцессным взаимодействием - копирование фрагментов данных между границами процессов. С другой стороны, вы можете использовать все аккуратные функции, например, shared_ptr.

...