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