Взагалі я припускаю, що потоки не синхронізовані, користувач повинен зробити відповідне блокування. Однак, чи є такі речі, як coutспеціальна обробка в стандартній бібліотеці?
Тобто, якщо записується декілька потоків, чи coutможуть вони пошкодити coutоб'єкт? Я розумію, що навіть при синхронізації ви все одно отримаєте випадковий переплетений вихід, але це перемежування гарантоване. Тобто, чи безпечно користуватися coutз декількох ниток?
Чи залежить цей постачальник? Що робить gcc?
Важливо : Будь ласка, вкажіть якісь посилання на вашу відповідь, якщо ви скажете "так", оскільки мені потрібні певні докази цього.
Моя стурбованість також не стосується базових системних викликів, це добре, але потоки додають шар буферизації зверху.
printfсвітиться, коли повний вихід записується stdoutодним кадром; при використанні std::coutкожної ланки ланцюга вираження буде виведено окремо до stdout; між ними може бути якесь інше написання потоку, stdoutзавдяки якому кінцеве замовлення виводу псується.