私は加速されたC++を読んでいて、著者は次のように書いています。
実行に時間がかかる可能性のあるプログラムを作成する場合は、適切なタイミングで出力バッファーをフラッシュすることが重要な習慣になります。そうしないと、プログラムの出力の一部が、プログラムが書き込みを行ってから表示されるまでの間に、システムバッファで長時間停止する可能性があります。
これらの概念のいずれかを誤解している場合は、訂正してください。
- バッファ:入力または出力を一時的に保持するために使用されるランダムアクセスメモリのブロック。
- フラッシング:特定の..ummに割り当てられていたランダムアクセスメモリを解放します。
私が見つけたこの説明があります:
出力デバイスをフラッシュするということは、先行するすべての出力操作をすぐに完了する必要があることを意味します。これは、オペレーティングシステムで使用される最適化手法であるバッファリングの問題に関連しています。大まかに言えば、オペレーティングシステムは、画面へのデータ送信に関連するコストを正当化するのに十分な量のデータがあると判断するまで、データを「スタンバイ」にする権利を留保します(通常は行使します)。ただし、場合によっては、プログラムで実行される出力操作がプログラムの実行の特定の時点で完了することを保証する必要があるため、出力デバイスをフラッシュします。
その説明から続けて、システムがバッファをフラッシュする原因となる3つのイベントを読みました。
- バッファがいっぱいになり、自動的にフラッシュされます
- ライブラリは、標準の入力ストリームから読み取るように求められる場合があります*は、次のような標準の入力ストリームです。
std::cin >> name ;
- 3番目の機会は、明示的に指示する場合です。どのように明示的にそれを伝えるのですか?
私は以下を完全に把握しているようには感じませんが:
- 出力バッファとは、単なるバッファおよび推定可能な他のタイプのバッファとは何ですか。
- バッファをフラッシュすることの意味。単にラムをクリアすることを意味しますか?
- 上記の説明で参照されている「出力デバイス」とは
- そして最後に、このすべての後、あなたのバッファをフラッシュするのに適切な瞬間があります...それは心地よく聞こえません。