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