同じファイルへの出力ストリームが開いている(ただし、書き込みはしていない)ときに、ファイルへの入力ストリームを開いても安全ですか(シングルスレッド)
2 に答える
ヘルメットなしで自転車に乗るのが危険であるのと同じように、それはおそらく「安全ではない」でしょう。物事はもっと簡単にうまくいかない可能性がありますが、あなたが賢くて注意していれば、それは問題ではないはずです。ただし、実際にはこれを行う必要はありません。読み取りたいときに出力ストリームを閉じ、読み取りが終わったら再度開くことができます。
部分的に、それはシステムに依存します。システムがそれを許可しない場合があります。それ以外は、書き込み用にストリームを開いて、同じファイルで複数のストリームを(方向に関係なく)開くとすぐに、バッファリングについて心配する必要があります。あなたの場合、読み取り用にストリームを開く前にフラッシュを実行し、読み取り中に書き込みを行わない場合は、問題ないはずです。書き込もうとしていて、最後に書いたものを読み込もうとしている場合は、読み取りバッファーをファイルと再同期するためにできることは何もないため、より困難です。また、2つの異なるストリームを介して書き込もうとしている場合は、さらに問題があります。(書き込みを常に最後に追加する必要があり、フラッシュするときに調整できる場合でも、でファイルを開くとstd::ios_base::app
うまくいくはずです。しかし、それは読み取りに役立ちません。)