En général, je suppose que les flux ne sont pas synchronisés, c'est à l'utilisateur de faire le verrouillage approprié. Cependant, des choses comme cout
obtenir un traitement spécial dans la bibliothèque standard?
Autrement dit, si plusieurs threads écrivent, cout
peuvent-ils corrompre l' cout
objet? Je comprends que même si synchronisé, vous obtiendrez toujours une sortie entrelacée de manière aléatoire, mais cet entrelacement est-il garanti? Autrement dit, est-il sûr de l'utiliser à cout
partir de plusieurs threads?
Ce fournisseur dépend-il? Que fait gcc?
Important : Veuillez fournir une sorte de référence pour votre réponse si vous dites «oui» car j'ai besoin d'une sorte de preuve de cela.
Ma préoccupation ne concerne pas non plus les appels système sous-jacents, ce sont bien, mais les flux ajoutent une couche de tampon par-dessus.
printf
brille car la sortie complète est écrite stdout
en un seul coup; lors de l'utilisation de std::cout
chaque maillon de la chaîne d'expression, il serait émis séparément vers stdout
; entre eux, il peut y avoir un autre thread d'écriture à stdout
cause duquel l'ordre de la sortie finale est perturbé.