web-dev-qa-db-ja.com

2つのアプリケーション間でメモリを共有する

2つの異なるウィンドウアプリケーションがあります(2人の異なる人がコードを記述しています)。 1つはC++で書かれており、もう1つはC#で書かれています。 RAMの間でデータを共有する方法が必要です。1つはデータを書き込み、もう1つは書き込まれたデータを読み取るだけです。最も効果的で高速にするために何を使用すればよいですか?ありがとう。

16
uniquepito

Memory Mapped Files を使用できます。

ここ は、それらの使用方法を説明する記事です。

24
Oded

Windows File Mapping Object を使用すると、プロセス間でメモリを共有できます。

2

名前付きパイプ を使用できます。

名前付きパイプは、パイプサーバーと1つ以上のパイプクライアント間の通信用の名前付き一方向パイプまたは二重パイプです。名前付きパイプのすべてのインスタンスは同じパイプ名を共有しますが、各インスタンスには独自のバッファーとハンドルがあり、クライアント/サーバー通信に個別のコンジットを提供します。インスタンスを使用すると、複数のパイプクライアントが同じ名前付きパイプを同時に使用できます。

すべてのプロセスは、セキュリティチェックの対象となる名前付きパイプにアクセスできます。これにより、名前付きパイプは、関連するプロセスまたは関連しないプロセス間の簡単な通信形式になります。

2
dtb

メッセージに基づいたコミュニケーションができるように再設計することをお勧めします。 .NETでの自動メモリ管理(共有メモリと比較した場合)により、堅牢ではるかに使いやすくなっています。遅いですが。

0
Al Kepp

それはあなたが共有する雄羊でなければなりませんか?そうでない場合は、1つのアプリケーションからXMLファイルと言うデータを書き込み、別のアプリケーションでXMLを読み取ることができます。一度に1つのアプリケーションのみがリソースから読み取るようにする必要があります。 xmlファイルの場合、「xml_filename.lock」と呼ばれるXMLファイルのディレクトリにファイルを作成できます。これは、存在する場合、XMLファイルが他のアプリケーションによって使用されていることを示します。

この種類のソリューションが目的に合わない場合は、何をしようとしているかを教えてください。原則として、安定性とセキュリティを確保するために、アプリケーションは他のアプリケーションとメモリを共有しないでください。

0
Ric Jafe