Передача сообщений нескольким процессам (Очередь сообщений точка-точка с несколькими читателями)

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

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

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

1
задан Afriza N. Arief 25 August 2010 в 07:48
поделиться

2 ответа

Прямые очереди будут работать нормально. Да, при отправке только один получатель получит сообщение , но отправитель может запросить очередь (вызвав GetMsgQueueInfo), чтобы узнать, сколько слушателей (член wNumReaders из MSGQUEUEINFO), и просто повторите сообщение указанное количество раз.

2
ответ дан 2 September 2019 в 21:52
поделиться

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

Programming Windows Embedded CE 6.0 Developer Reference, Fourth Edition, Douglas Boiling, Page 304

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

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

0
ответ дан 2 September 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: