複数のプロセスへのブロードキャストメッセージ(複数の読者とのポイントツーポイントメッセージキュー)
-
01-10-2019 - |
質問
複数のプロセスとデータを共有したいと思います。私の最初の試みは使用することです ポイントツーポイントメッセージキュー P2P MSGキューが非常に高速であると読んでから複数の読者がいます。
私のテスト中、複数の読者が同じキューから読んでいるように思われ、1人の読者によってメッセージが取得されると、他の読者は同じメッセージを取得することができません。
複数のプロセスにデータを共有するためのより良いIPCは何ですか?データは頻繁に更新され(1秒あたり複数回)、WM_CopyDataは良い選択ではなく、「通常の」メッセージキューに干渉すると思います。
私の2回目の試みは、おそらく共有メモリ + Mutex +イベントになるでしょう
解決
ポイントツーポイントキューは正常に動作します。はい、あなたが送るとき、1つのレシーバーのみがメッセージを受け取ります しかし 送信者はキューを照会できます(呼び出して getMSGQUEUEINFO)リスナーの数を確認する(WNUMReadersメンバー msgqueueinfo)その数回のメッセージを繰り返すだけです。
他のヒント
最後に、複数のスレッドまたはプロセスが同じキューを開くか、読み取りアクセスまたは書き込みアクセスのために完全に有効です。ポイントツーポイントメッセージキューは、複数の読者と複数の作家をサポートしています。この実践により、たとえば、1つのライタープロセスで、複数のクライアントプロセスまたは複数のライタープロセスにメッセージを送信して、単一の読者プロセスにメッセージを送信できます。ただし、特定の読者プロセスへのメッセージに対処する方法はありません。プロセス、またはスレッドがキューを読み取ると、次に利用可能なメッセージが読み取られます。複数の読者にメッセージをブロードキャストする方法もありません。
プログラミングWindows Embedded CE 6.0開発者リファレンス、第4版、ダグラスボイリング、304ページ
警告にもかかわらず、CtackeのIDEは私のユースケースにとって問題ないようです。
警告:
私のキューの読者はする必要があります Sleep(10)
他の読者がメッセージを送ってメッセージを取得できるように、メッセージのシェアを取得した後。それなし Sleep()
, 、1つの読者プロセスのみが待機から合図されます。