私は完全に管理された.NET用の共有メモリの実装を探しています(P/Invokeは互換性があり、C++/CLIは混在していません)。完全に管理された共有メモリの.NET実装ですか?
答えて
.NET 4.0 BCLでサポートされているMemory-Mapped Filesを探しているようですね。
.NET Frameworkバージョン4以降では、Win32でのメモリマップファイルの管理の説明に従って、ネイティブWindows関数がメモリマップファイルにアクセスするのと同じ方法でマネージコードを使用してメモリマップファイルにアクセスできます。 MSDNライブラリ
それらのように見え、共有ミューテックスはそのトリックをやるつもりです。結局のところ、私はちょうどいくつかの財政的なもののために2つのプロセスに渡って非常に低い遅延でいくつかの倍を渡す必要があります。ありがとう – em70
まあ、.NETフレームワークは無料です。 .NET 4.0では、System.IO.MemoryMappedFiles名前空間クラスがサポートされています。共有メモリは、ガベージコレクタの概念とかなり劇的なインピーダンスの不一致です。そのため、しばらく時間がかかりました。ポインタを使用しない限り、GCヒープからMMFビューへのコピーは避けられません。
他のIPCメカニズムも共有メモリを使用しますが、カーネルに組み込まれているため明示的ではありません。これは、すべてほぼ同じ速度で実行され、マッピングをセットアップするためのマイクロ秒、次にメモリ間コピーを行うためのバス帯域幅だけが実行されます。毎秒5ギガバイトがあなたが走るのが最も遅いです。
便利なパフォーマンス情報ありがとう、+1 :) – em70
This articleは、セクション3で、P/Invokeを使用してMapViewOfFileとフレンドをラップする方法を説明しています。
- 1. XNA用の完全な.NET ZerConf実装
- 2. OSXのCで共有メモリを管理する
- 3. メモリ管理の共通パターン
- 4. PHPで管理/共有されたWebホスティング5.3 +
- 5. .Net Framework継承メモリ管理
- 6. 保護された共有メモリ?
- 7. IIS6.0で管理された.Net COM +サービスの実行
- 8. バージョン管理共有フォルダ
- 9. b +ツリーの完全実装
- 10. 共有されたmmapファイルを管理するためのライブラリまたはツール
- 11. 不完全な型の非共有スマートポインタ
- 12. Android共有ライブラリの完全な保護
- 13. 共有メモリ内のプロセス間のバリア実装
- 14. 完全に管理されていないC++アプリケーションの.NETアセンブリを使用しますか?
- 15. 完全管理のWebベースのバージョン管理
- 16. Javaでのガンマ不完全の実装
- 17. C++でのメモリ所有権を管理する最も良い方法は?共有ポインタまたは他のメカニズム?
- 18. パラメータ完全なWebサイトの管理!
- 19. MATERABでのMSER完全実装
- 20. githubの共有リポジトリでプルリクエストを管理するためのワークフロー
- 21. メモリはPythonでどのように管理されますか
- 22. Capistrano:共有のファイルのバージョン管理/
- 23. 3種類のアプリケーション間で共有されているが安全なメモリ(Windows)
- 24. 完全な管理者権限でプログラムが実行されているかどうかを検出する
- 25. ディスク上ではなくメモリ内で完全に実行される方法
- 26. このコンテナ実装は完全に賢明ですか?
- 27. Google +で共有..表示されたダイアログの完了アクション
- 28. 複数の.NETプロジェクトで共通DLLのバージョン管理を管理する方法
- 29. 完全なコンテンツ管理システムが必要ですか?
- 30. プログラムで作成されたviewControllerのメモリ管理
と、MSILにコンパイルされた、混合されていない(例えば '/ clr:pure'でコンパイルされた)C++/CLIはどうでしょうか? –
メモリを共有するのは簡単ですが、プリミティブ型だけを共有できることを理解していますか? (そしておそらくすべてのメンバーがプリミティブである値の型) –
もう一つの有効なオプションはNamedPipes –