7

同時オープンfstreamの使用について戦略的な質問があります。大量のファイルを読みすぎるプログラムを書かなければなりません。各ファイルには、一連の識別子に関する情報がありますが、一度だけです。この情報を計算し、識別子ごとに別のファイルに保存する必要があります。すべての識別子は複数のファイルに表示され、毎回同じファイルに保存する必要があります (1 つの識別子に複数回)。数百の識別子が予想されるので、数百のファイルチームを同時に開く必要があるとは思えません。

同時ファイルストリームの制限はありますか? または、これを行う別の方法を提案していますか?

プログラムは大量のデータ (約 10GB 以上) を計算し、おそらく数時間計算します。

ありがとう

4

4 に答える 4

3

C++ 標準では、同時に開くことができるファイルの数 (または、私は信じていますが、調べたことはありません) の制限を定義していません。

C++ ライブラリの特定の実装には制限がある場合があります (ドキュメント化されている場合とされていない場合があります)。オペレーティング システムには、システム全体に対してある程度の制限があり、プロセスごとに別の制限がある可能性があります。これらの制限が何であるかはさまざまであるため、簡単に判断する方法はありません。また、システム所有者が構成するさまざまな設定によって、人為的に低くなる場合もあります。

また、これらすべての制限が何であるかを知っていても、状況によって異なる動的な制限が存在する可能性があります。たとえば、システム全体で 16384 ファイルを開くことができ、プロセスごとの制限が 1000 で、C++ ライブラリで 1024 が許可されている場合、 OS がデータの重要なブロックを割り当てるために使用できるメモリがないため、単一のファイルを開くことができない場合があります。

于 2013-07-04T15:03:33.230 に答える