Generalnie zakładam, że strumienie nie są zsynchronizowane, to do użytkownika należy odpowiednie zablokowanie. Czy jednak takie rzeczy jak coutbiblioteka standardowa są traktowane w specjalny sposób?
Oznacza to, że jeśli wiele wątków pisze do, coutczy mogą uszkodzić coutobiekt? Rozumiem, że nawet po zsynchronizowaniu nadal otrzymujesz wyjście z przeplotem losowo, ale czy to przeplot jest gwarantowane. To znaczy, czy można bezpiecznie używać coutz wielu wątków?
Czy ten dostawca jest zależny? Co robi GCC?
Ważne : jeśli powiesz „tak”, podaj jakieś odniesienie do odpowiedzi, ponieważ potrzebuję jakiegoś dowodu na to.
Nie martwię się również o podstawowe wywołania systemowe, te są w porządku, ale strumienie dodają warstwę buforowania na wierzchu.
printfświeci, gdy cały wynik jest zapisywany stdoutw jednym ujęciu; podczas korzystania z std::coutkażdego łącza łańcucha wyrażeń zostanie wyprowadzony osobno stdout; Pomiędzy nimi może znajdować się inny wątek, w stdoutwyniku którego kolejność końcowego wyjścia zostanie zepsuta.