1

複数のプロセスでデータを共有したい。私の最初の試みは、P2P Msg Queueが非常に高速であることを読んだので、複数のリーダーでポイントツーポイントメッセージキューを使用することです。

私のテスト中、複数のリーダーが同じキューから読み取っているようで、1人のリーダーがメッセージをフェッチすると、他のリーダーは同じメッセージをフェッチできなくなります。

複数のプロセスとデータを共有するためのより良いIPCは何ですか?データは頻繁に(1秒間に複数回)更新されるため、WM_COPYDATAは適切な選択ではなく、「通常の」メッセージキューに干渉すると思います。

私の2番目の試みは、おそらく共有メモリ+ミューテックス+イベントです

4

2 に答える 2

2

ポイントツーポイントキューは正常に機能します。はい、送信すると、1人の受信者だけがメッセージを受け取ります、送信者はキューにクエリを実行して(GetMsgQueueInfoを呼び出し)、リスナー(MSGQUEUEINFOのwNumReadersメンバーの数を確認し、その回数だけメッセージを繰り返すことができます。

于 2010-08-25T12:26:24.673 に答える
0

最後に、複数のスレッドまたはプロセスが読み取りアクセスまたは書き込みアクセスのために同じキューを開くことは完全に有効です。ポイントツーポイントメッセージキューは、複数のリーダーと複数のライターをサポートします。この方法により、たとえば、1つのライタープロセスが複数のクライアントプロセスにメッセージを送信したり、複数のライタープロセスが単一のリーダープロセスにメッセージを送信したりできます。ただし、特定のリーダープロセスにメッセージを送信する方法はありません。プロセスまたはスレッドがキューを読み取ると、次に使用可能なメッセージが読み取られます。複数のリーダーにメッセージをブロードキャストする方法もありません。

Windows Embedded CE 6.0開発者リファレンスのプログラミング、第4版、Douglas Boiling、304ページ

警告にもかかわらず、ctackeのideは私のユースケースには問題ないようです。

警告:
私のキューリーダーはSleep(10)、メッセージの共有をフェッチした後、他のリーダーがメッセージを取得できるようにする必要があります。がないSleep()場合、待機から通知されるリーダープロセスは1つだけです。

于 2010-08-30T03:39:33.060 に答える