この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 23927|答える: 2

[出典] C#はプロセスメモリマッピング、ファイル共有メモリを実装しています

[リンクをコピー]
掲載地 2017/10/07 18:51:10 | | |
メモリマッピングファイルは仮想メモリを使ってファイルをプロセスのアドレス空間にマッピングし、その後プロセスはプロセス空間内のアドレスと同様にファイルを操作します。例えば、memcpyやC言語の他のメモリ操作関数を用います。 この方法は、ファイルや大きなファイルを頻繁に処理する必要がある状況で、通常のIOよりも高いIO処理効率が高い場合に適しています
共有メモリは、ディスク上のファイルではなくメモリの一部をマッピングするメモリマッピングファイルの特殊なケースです。 共有メモリの主体はプロセスであり、オペレーティングシステムはデフォルトで各プロセスにメモリ空間を割り当て、各プロセスはオペレーティングシステムから割り当てられたメモリの一部のみにアクセスでき、他のプロセスにはアクセスできません。 また、同じメモリを異なるプロセス間でアクセスする必要がある場合もありますが、どうすればよいでしょうか? オペレーティングシステムは共有メモリへのアクセスを作成するAPIを提供し、メモリを共有する必要があるプロセスは、この定義されたAPIセットを通じて複数のプロセスが共有するメモリにアクセスでき、各プロセスはハードディスク上のファイルにアクセスするかのようにこのメモリにアクセスします。 .Net 4.0は System.IO を導入します。 MemoryMappedFiles名前空間は、Windows共有メモリ関連APIをカプセル化し、.Netプログラマーがメモリマッピングファイルを使いやすくするクラスです。
C#で共有メモリを使いましょう。 以下のApp1のコードは、ユーザーが共有メモリにテキストの行を入力できるようにします。 App2は常にコンソールを更新し、最新の共有メモリ内容を出力します。 App3はApp2と同じ機能を実装していますが、読み書き方法が異なります。

データを読み取るために2つの方法が用いられました。
プロセス間の通信はこれまでほとんど使われていなかったため、この方法はあくまで予備的な理解に過ぎません。 プログラムはあまりにも原始的で、評価されないことも多いです。 例えば、共有メモリの作成方法や、取得・削除の方法などです。




先の:.net/c# CryptoJS aes 暗号化ソースコード
次に:activemqの永続ストアは満員です
 地主| 掲載地 2025/10/03 16:10:57 |
.NET/C#はMutexとMemoryMappedFileに基づくプログラムのシングルトンを実装しています
https://www.itsvse.com/thread-10808-1-1.html

.NET/C#の親子プロセスはMemoryMappedFileを使って通信します
https://www.itsvse.com/thread-10983-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com