Secara umum saya berasumsi bahwa aliran tidak disinkronkan, terserah pengguna untuk melakukan penguncian yang sesuai. Namun, apakah hal-hal seperti cout
mendapat perlakuan khusus di perpustakaan standar?
Artinya, jika beberapa utas menulis, cout
dapatkah mereka merusak cout
objek? Saya memahami bahwa meskipun disinkronkan, Anda masih akan mendapatkan keluaran interleaved acak, tetapi apakah interleaving itu dijamin. Artinya, apakah aman digunakan cout
dari banyak utas?
Apakah vendor ini bergantung? Apa yang dilakukan gcc?
Penting : Harap berikan referensi untuk jawaban Anda jika Anda menjawab "ya" karena saya butuh semacam bukti untuk ini.
Perhatian saya juga bukan tentang panggilan sistem yang mendasarinya, itu baik-baik saja, tetapi aliran menambahkan lapisan buffer di atas.
printf
bersinar saat output lengkap ditulis stdout
dalam satu pengambilan; ketika menggunakan std::cout
setiap tautan rantai ekspresi akan menjadi keluaran secara terpisah stdout
; di antara mereka mungkin ada beberapa utas lain yang menulis stdout
karena urutan hasil akhir menjadi kacau.