私は完全に管理された.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. ブースト管理された共有メモリsegfault
- 2. C++:Boost:管理共有メモリにセマフォーロックが必要ですか?
- 3. XNA用の完全な.NET ZerConf実装
- 4. cudaの共有メモリと管理対象メモリの変数
- 5. OSXのCで共有メモリを管理する
- 6. メモリ管理の共通パターン
- 7. 共有メールボックス管理
- 8. .Net Framework継承メモリ管理
- 9. PHPで管理/共有されたWebホスティング5.3 +
- 10. リンクを使用したメモリ管理システムの実装
- 11. IIS6.0で管理された.Net COM +サービスの実行
- 12. 保護された共有メモリ?
- 13. NativeScriptで管理された設定を実装する
- 14. Nluaと共有プロジェクトで実装されたC#クラスを使用
- 15. バージョン管理共有フォルダ
- 16. b +ツリーの完全実装
- 17. 完全に管理されていないC++アプリケーションの.NETアセンブリを使用しますか?
- 18. 共有メモリ内のプロセス間のバリア実装
- 19. 共有されたmmapファイルを管理するためのライブラリまたはツール
- 20. Android共有ライブラリの完全な保護
- 21. 不完全な型の非共有スマートポインタ
- 22. Google Cloud Platformで完全に管理された、常に利用可能なnode.jsスクリプトの実行
- 23. 管理されたイベントのC++ Cliの実装
- 24. C++でのメモリ所有権を管理する最も良い方法は?共有ポインタまたは他のメカニズム?
- 25. 完全管理のWebベースのバージョン管理
- 26. メモリはPythonでどのように管理されますか
- 27. Javaでのガンマ不完全の実装
- 28. パラメータ完全なWebサイトの管理!
- 29. githubの共有リポジトリでプルリクエストを管理するためのワークフロー
- 30. MATERABでのMSER完全実装
と、MSILにコンパイルされた、混合されていない(例えば '/ clr:pure'でコンパイルされた)C++/CLIはどうでしょうか? –
メモリを共有するのは簡単ですが、プリミティブ型だけを共有できることを理解していますか? (そしておそらくすべてのメンバーがプリミティブである値の型) –
もう一つの有効なオプションはNamedPipes –