問題タブ [memory-mapped-files]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - mmap を使用してファイルの一部だけをマップすることは可能ですか?
次のようなヘッダーを持つ入力ファイルがあります。
次に、構造体ピクセル*がこのファイルに書き込まれ、マップされます。
したがって、ヘッダーをスキップして、mmap 関数がその構造体への ptr を返すようにします。これどうやってするの?おそらくlseekで?例を教えてください。
ここにコードの一部を残します。
ご覧のとおり、現在、私の ppm 画像はchar*
データにマップされていますが、ヘッダーをスキップしてパーツのみにマップしたいと考えていpixel*
ます。
mmap からの char* とその + オフセットに等しい別のポインターの 2 つのポインターを使用することを提案する私のコードを次に示します。
c# - 暫定PDFドキュメントをドキュメント集約に保存するためのパフォーマンスの高い方法は?
ディスクからさまざまな種類の数百のドキュメントをロードして、1つの巨大な集約PDFを作成する必要があります。
私のアプローチは、各ドキュメントを個別にPDFに変換してから、それらを集約することです。
このプロセスの一環として、各PDFドキュメントを分離ストレージに書き込んでいます。
これを行うためのより良い方法はありますか?
パフォーマンスが優先されます-これはクライアント側です。
c++ - 共有メモリ内のさまざまなデータ型の読み取り
DLL を実行している異なるプロセス間でメモリを共有したいと考えています。したがって、それまでにメモリマップファイルを作成HANDLE hSharedFile = CreateFileMapping(...)
しLPBYTE hSharedView = MapViewOfFile(...)
、LPBYTE aux = hSharedView
bool
ここで、 a 、 a int
、 a 、 float
a をchar
aux 配列から読み取りたいと思います。bool
a andの読み方char
は簡単です。しかし、どのように or を読みまわすのでしょうint
かfloat
? int
orは 9 の位置から開始できることに注意してくださいfloat
。たとえば、4 で割り切れない位置です。
char[4]
aを読み取ってからまたはmemcpy
に変換できることは知っています。しかし、私は本当にこれを非常に高速にする必要があります。ポインターで何かできるかどうか疑問に思っていますか?float
int
前もって感謝します
c# - C#を使用して何百ものファイルをディスクに書き込む最速の方法は何ですか?
私のプログラムは、外部リソース(ネットワーク)によって受信された数百のファイルをディスクに書き込む必要があります。各ファイルは、現在GUIDという名前で特定のフォルダーに保存している単純なドキュメントですが、数百のファイルを作成し、書き込み、閉じるには時間がかかります。処理する。
これらの量のファイルをディスクに保存するためのより良い方法はありますか?私は解決策にたどり着きましたが、それが最善かどうかはわかりません。
最初に2つのファイルを作成します。1つは割り当てテーブルのようなもので、もう1つはドキュメントのすべてのコンテンツを格納する巨大なファイルです。しかし、このファイルから読み取ることは悪夢です。おそらく、メモリマップトファイルの手法が役立つでしょう。30GB以上で作業すると問題が発生する可能性がありますか?
編集: 1000個のテキストファイルをディスクに保存する最速の方法は何ですか?(書き込み操作は頻繁に実行されます)
windows - メモリ マップド ファイルへの読み取り/書き込みの制御 (Windows)
複数のプロセスによって開かれているファイルにマップされたメモリへの同時読み取り/書き込みから保護することを意図していますか?
たとえば、メモリ内の文字列が「hello」で、あるプロセスが「hi...」を書き込んだ場合、同時に読み取る別のプロセスが「hi.lo」のような断続的な値を取得する可能性があると言うのは正しいですか? ?
基本的に私が求めているのは、人々がこれらの種類のものをどのように保護するかということです. セマフォを使用するつもりですか?これらはプロセス全体で機能しますか?
c++ - Windows メモリ マップ ファイルの内容は既定で常にゼロに設定されていますか?
私のシステムでは、特定のサイズになるように作成されたメモリ マップ ファイルは、デフォルトで常に完全にゼロになることが経験的にわかりました。たとえば、呼び出しを使用して
..そしてそのファイルのマップされたビューに書き込むと、ゼロ以外のデータを書き込んだ場合を除いて、常に完全にゼロになった20MBのファイルになります。
ファイルの初期化されていない部分をゼロと見なすことができるかどうか疑問に思っています。一般に、この動作は Windows で保証されていますか?
database - シンプルで高速かつ信頼性の高いデータベース(NoSQL)
ネイティブコードアプリケーションに永続性を追加するためのソリューションを探しています。シンプル(SQLなし)、高速、そして最も重要な信頼性が必要です。
私が考えることができる最善のアプローチは、メモリマップトファイルを使用することです。可能な限りシンプルで高速です。値をプレーンデータ配列の「メモリ」に格納するだけです。ただし、信頼性はあまり高くないと思います。電源障害により、データベースの一貫性が失われたり、破損した状態になる可能性があります。メモリマップトファイルのグループをディスクにトランザクション同期できると、これは解決しますが、それは不可能だと思います。また、ファイルシステムがスナップショットまたはCOWクローン作成(Brtfsなど)をサポートしていない限り、バックアップとは、ファイルのコピー中にアプリケーションを完全に停止する必要があることを意味します。
誰かより良いアイデアがありますか?
c++ - メモリ マップ ファイル - 他のプロセスにデータのストリップを挿入する方法
私のファイル (sample.txt) には 10 文字あります。ファイルを書き込みモードで開き、createfilemapping("mymapping")
. 次に getchar で処理を保留します。次に、以下を行う別のプロセスを開きました
これで、sample.txt の値にアクセスして、k 経由で変更できます。ただし、別の 10 文字のストリップをファイルに挿入/追加する方法。
windows - メモリ マップト ファイルの識別
VirtualQuery を使用して、プロセスの仮想メモリの一部を特定しています。マップされたファイル (MEM_MAPPED) によって取得された領域を識別しますが、そこに割り当てられたファイルの実際のファイル (ファイル名) を決定する方法は? MapView* ファミリの API と関係があると思いますが、正確にはわかりません...
c++ - boost::interprocess::mapped_region が変更されたときのスレッド通知
boost::interprocess::mapped_region のバイトが interprocess_condition を使用して変更されたときに通知を受け取るにはどうすればよいですか。
ファイルを開き、特定の地域を正しくマッピングしました。メモリをポーリングして印刷すると、更新は成功しています。継続的にポーリングするのではなく、変更の通知を受け取りたいと思っています。
interprocess_condition を使用して、メモリが変更されたことをスレッドに通知するにはどうすればよいですか?