En general, asumo que las transmisiones no están sincronizadas, depende del usuario hacer el bloqueo apropiado. Sin embargo, ¿cosas como cout
recibir un tratamiento especial en la biblioteca estándar?
Es decir, si se escriben varios subprocesos, ¿ cout
pueden dañar el cout
objeto? Entiendo que incluso si estuviera sincronizado, todavía obtendría una salida intercalada aleatoriamente, pero ese intercalado está garantizado. Es decir, ¿es seguro utilizarlo cout
desde varios subprocesos?
¿Depende este proveedor? ¿Qué hace gcc?
Importante : proporcione algún tipo de referencia para su respuesta si dice "sí", ya que necesito algún tipo de prueba de esto.
Mi preocupación tampoco es sobre las llamadas al sistema subyacentes, están bien, pero las secuencias agregan una capa de almacenamiento en búfer en la parte superior.
printf
brilla, ya que la salida completa se escribe de stdout
una vez; cuando el uso de std::cout
cada eslabón de la cadena de expresión se enviaría por separado a stdout
; entre ellos puede haber algún otro hilo de escritura stdout
debido al cual el orden de la salida final se estropea.