Im Allgemeinen gehe ich davon aus, dass Streams nicht synchronisiert sind. Es ist Sache des Benutzers, eine entsprechende Sperrung vorzunehmen. Erhalten Dinge wie couteine Sonderbehandlung in der Standardbibliothek?
Das heißt, wenn mehrere Threads schreiben, coutkönnen sie das coutObjekt beschädigen? Ich verstehe, dass selbst wenn synchronisiert, Sie immer noch zufällig verschachtelte Ausgabe erhalten würden, aber ist diese Verschachtelung garantiert. Ist es sicher, coutvon mehreren Threads aus zu verwenden?
Ist dieser Anbieter abhängig? Was macht gcc?
Wichtig : Bitte geben Sie eine Referenz für Ihre Antwort an, wenn Sie "Ja" sagen, da ich einen Beweis dafür benötige.
Mein Anliegen ist auch nicht die zugrunde liegenden Systemaufrufe, diese sind in Ordnung, aber die Streams fügen eine Pufferschicht hinzu.
printfleuchtet hier die gesamte Ausgabe auf stdouteinmal. bei Verwendung würde std::coutjedes Glied der Ausdruckskette separat ausgegeben werden an stdout; dazwischen kann es einen anderen Thread geben, auf den geschrieben wird stdout, wodurch die Reihenfolge der endgültigen Ausgabe durcheinander gebracht wird.