2011-04-04 19 views
4

ネイティブC++(.NETは適用されません)を使用してWin32で(システム全体で)プロセス用のプロセス間通信システムを実装する必要があります。詳細については、バイナリ形式のメッセージを使用するプロセス間のメッセージルーティングシステムを検討しています。メッセージの送受信は非同期でなければなりません。Win32でマシン内プロセス通信に最適なIPC方法は何ですか?

TCPソケットを選択肢の1つにすることができます。しかし、高性能のためのより良い選択肢があるかどうかを知りたいだけです。 (私はセキュリティの問題を無視することができます)

詳細なコードは要求しませんが、あなたの洞察だけです。

+1

Windows APIがC APIであることに言及する価値があります。 –

+0

可能な重複した[プロセス間呼び出しのための優れた単純なRPCライブラリ?](http://stackoverflow.com/questions/5398673/any-good-and-simple-rpc-library-for-inter-process-calls) ) – dalle

答えて

4

余裕があり、リスクと実験が好きであれば、文書化されていないWindows機能:Local Procedure Call。それは永遠にそこにあり、それはおそらく最も速いです。なぜなら、それは他のすべての基礎だからです。

+0

これは興味深いものです:初めて聞いたのは –

+0

そのウィキペディアのリンクによるとローカルプロシージャコールは、同じマシン内のコールのみを許可します。 –

+0

@Amigable - はい、 "intra-machine"に関する質問だったIPC –

3

あなたは名前付きパイプも見ています:http://msdn.microsoft.com/en-us/library/aa365590%28v=vs.85%29.aspx。私はIPMのためにもMemoryMappedFilesについて知っています:http://msdn.microsoft.com/en-us/library/ms810613.aspx、しかし私は個人的には決してtryedしません。私はNamedPipesとSocketの両方を単一のマシンIPC戦略で使用しましたが、私は率直に言えば、2つのアプローチのパフォーマンス差を測定しました。少なくとも、これを避けるためには大きな違いは気付かなかったのです。 ... "。あなたがより良い結果を出すために、より自信を持っている技術から始まるかもしれません。)

+1

次のリンクも参照してください:http://stackoverflow.com/questions/1882886/performance-of-sockets-vs-pipes –

2

私はメモリマップされたファイルのファンです。 アクセス制限を提供するために、リーダー/ライターのロックでラップされています。

関連する問題