Вещательное сообщение для нескольких процессов (очередь сообщений точка к точке с несколькими считывателями)

StackOverflow https://stackoverflow.com/questions/3563844

Вопрос

Я хочу поделиться с помощью нескольких процессов. Моя первая попытка использовать Укажите на точку очереди сообщений С несколькими читателями, так как я прочитал, что очередь P2P MSG очень быстро.

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

Что лучше IPC для совместного использования данных для нескольких процессов? Данные часто обновляются (несколько раз в секунду), поэтому я думаю, что WM_Copydata не является хорошим выбором и будет мешать «нормальному» очереди сообщений.

Моя вторая попытка, вероятно, будет общей памятью + Mutex + события

Это было полезно?

Решение

Очереди точны до точки будут работать нормально. Да, когда вы отправляете, только один приемник получит сообщение но Отправитель может запрашивать очередь (позвонив GetmsgqueueInfo.) Чтобы увидеть, сколько слушателей (члена WnUmreaders MsgqueueInfo.) Есть и просто повторите сообщение то количество раз.

Другие советы

Наконец, он совершенно действителен для более чем одного потока или процесса, чтобы открыть одну и ту же очередь для доступа к чтению или для доступа к записи. Очески сообщений точек к точкам поддерживают несколько читателей и несколько писателей. Эта практика позволяет, например, один процесс писателя для отправки сообщений нескольким клиентским процессам или нескольким процессам писателя для отправки сообщений одному процессу читателя. Однако нет способа устранить сообщение для конкретного процесса читателя. Когда процесс или нить, читает очередь, он прочитал следующее доступное сообщение. Также нет способа транслировать сообщение нескольким читателям.

Программирование Windows Embedded CE 6.0 Ссылка разработчика, Четвертое издание, Дуглас Кипячение, стр. 304

Несмотря на предупреждение, IDE CTACKE, кажется, хорошо для моих случаев использования.

Предостережение:
Мои читатели очереди надо Sleep(10) После того, как они принесут свою долю сообщения, чтобы позволить другим читателям идти и получать сообщения. Без Sleep(), только один процесс читателя сигнализируется от ожидания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top