In generale presumo che i flussi non siano sincronizzati, spetta all'utente eseguire il blocco appropriato. Tuttavia, cose come cout
ottenere un trattamento speciale nella libreria standard?
Cioè, se più thread stanno scrivendo, cout
possono danneggiare l' cout
oggetto? Capisco che anche se sincronizzato avresti comunque un output interlacciato casualmente, ma è quell'interlacciamento garantito. Cioè, è sicuro da usare cout
da più thread?
Questo fornitore dipende? Cosa fa gcc?
Importante : fornisci un qualche tipo di riferimento per la tua risposta se dici "sì" poiché ho bisogno di una sorta di prova di ciò.
La mia preoccupazione non riguarda anche le chiamate di sistema sottostanti, quelle vanno bene, ma i flussi aggiungono uno strato di buffering in cima.
printf
brilla quando l'intero output viene scritto stdout
in un colpo solo; quando si utilizza std::cout
ogni collegamento della catena di espressioni verrebbe visualizzato separatamente in stdout
; tra di loro può esserci qualche altro thread in scrittura a stdout
causa del quale l'ordine dell'output finale viene incasinato.