2010-11-18 7 views
3

Ich versuche, auf Multithreading zu lernen, und ich habe eine einfache Frage. Bei den meisten Beispielen, die ich finde, ist der Standard-Ausgabepuffer ausgeschaltet, bevor mehrere Threads ihn verwenden dürfen:Warum den Standard-Ausgabepuffer beim Multithreading ausschalten?

setbuf (stdout, NULL);

Warum? Codes drucken die gleichen, wenn ich diese Zeile auf ihnen entfernen!

Antwort

4

Es ist möglich, dass sie nicht gleich ausgedruckt werden - wenn die Ausgabe gepuffert ist, wird sie möglicherweise nicht sofort angezeigt, was die Reihenfolge ändern kann, in der die Zeilen zwischen Threads ausgegeben werden.

Durch das Deaktivieren der Pufferung wissen Sie, in welcher Reihenfolge die Anweisungen ausgeführt wurden.

2

Es verhindert Pufferung, was bedeutet, dass Sie ein besseres Gefühl dafür haben, wann verschiedene Threads was gemacht haben. D. h., Sie sehen eher Schreibvorgänge nach stdout, wie sie auftreten, und nicht nachdem eine gewisse Datenmenge in stdout geschrieben wurde.

Es ist auch hilfreich, wenn Sie die Ausgabe einer Konsolenanwendung an eine Benutzeroberfläche leiten.