Является ли cout синхронизированным / потокобезопасным?

В общем, я предполагаю, что потоки не синхронизированы, пользователь должен выполнить соответствующую блокировку. Однако получают ли такие вещи, как cout особую обработку в стандартной библиотеке?

То есть, если несколько потоков записывают в cout , могут ли они повредить cout объект? Я понимаю, что даже при синхронизации вы все равно получите произвольно чередующийся вывод, но гарантировано ли это чередование. То есть безопасно ли использовать cout из нескольких потоков?

Зависит ли этот поставщик? Что делает gcc?


Важно : Пожалуйста, дайте ссылку на свой ответ, если вы скажете «да», так как мне нужно какое-то доказательство этого.

Меня беспокоит также не основная система вызовов, это нормально, но потоки добавляют сверху слой буферизации.

108
задан R. Martinho Fernandes 24 August 2011 в 02:23
поделиться