私はマルチスレッドについて学びたいと思っており、簡単な質問があります。私が見つけたほとんどの例では、標準出力バッファがオフになってから、複数のスレッドにそれを使用させます。マルチスレッド時に標準出力バッファをオフにするのはなぜですか?
setbuf(stdout、NULL);
なぜですか?私はそれらの行を削除する場合、コードは同じ印刷されます!
私はマルチスレッドについて学びたいと思っており、簡単な質問があります。私が見つけたほとんどの例では、標準出力バッファがオフになってから、複数のスレッドにそれを使用させます。マルチスレッド時に標準出力バッファをオフにするのはなぜですか?
setbuf(stdout、NULL);
なぜですか?私はそれらの行を削除する場合、コードは同じ印刷されます!
出力がバッファされているときにすぐに表示されず、スレッド間で出力される順序が変わる可能性があります。
バッファリングをオフにすると、ステートメントの実行順序がわかります。
これはバッファリングを防ぎます。これは、さまざまなスレッドが何をしたかをよりよく理解できることを意味します。つまり、ある程度の量のデータがstdout
に書き込まれた後ではなく、stdout
に書き込まれる可能性が高くなります。
コンソールアプリケーションの出力をUIにパイプするときにも役立ちます。