โดยทั่วไปฉันถือว่าสตรีมไม่ซิงโครไนซ์ขึ้นอยู่กับผู้ใช้ที่จะทำการล็อกที่เหมาะสม อย่างไรก็ตามสิ่งต่างๆเช่นcoutได้รับการดูแลเป็นพิเศษในไลบรารีมาตรฐานหรือไม่
นั่นคือถ้าหลายเธรดเขียนไปcoutพวกเขาสามารถทำให้coutวัตถุเสียหายได้หรือไม่? ฉันเข้าใจดีว่าแม้ว่าจะซิงโครไนซ์แล้วคุณจะยังคงได้รับเอาต์พุตแบบสอดแทรกแบบสุ่ม แต่รับประกันการแทรกสอด นั่นคือปลอดภัยที่จะใช้coutจากหลายเธรดหรือไม่?
ขึ้นอยู่กับผู้ขายรายนี้หรือไม่? gcc ทำอะไร?
สำคัญ : โปรดระบุข้อมูลอ้างอิงสำหรับคำตอบของคุณหากคุณตอบว่า "ใช่" เนื่องจากฉันต้องการหลักฐานบางอย่างเกี่ยวกับเรื่องนี้
ข้อกังวลของฉันไม่ได้เกี่ยวกับการเรียกระบบพื้นฐานซึ่งเป็นสิ่งที่ดี แต่สตรีมเพิ่มชั้นของการบัฟเฟอร์ที่ด้านบน
printfส่องแสงเมื่อเอาต์พุตสมบูรณ์ถูกเขียนลงstdoutในช็อตเดียว เมื่อใช้std::coutการเชื่อมโยงของห่วงโซ่การแสดงออกแต่ละคนจะถูกส่งออกแยกstdout; ในระหว่างนั้นอาจมีการเขียนเธรดอื่น ๆstdoutเนื่องจากคำสั่งสุดท้ายของเอาต์พุตจะยุ่งเหยิง