Em geral, presumo que os fluxos não estão sincronizados, cabe ao usuário fazer o bloqueio apropriado. No entanto, coisas como coutreceber tratamento especial na biblioteca padrão?
Ou seja, se vários threads estiverem gravando, couteles podem corromper o coutobjeto? Eu entendo que, mesmo se sincronizado, você ainda terá uma saída intercalada aleatoriamente, mas essa intercalação é garantida. Ou seja, é seguro usar a coutpartir de vários threads?
Este fornecedor é dependente? O que o gcc faz?
Importante : forneça algum tipo de referência para sua resposta se você disser "sim", pois preciso de algum tipo de prova disso.
Minha preocupação também não é com as chamadas de sistema subjacentes, elas estão bem, mas os fluxos adicionam uma camada de buffer no topo.
printfbrilha, pois a saída completa é gravada de stdoutuma só vez; ao usar std::coutcada elo da cadeia de expressão seria enviado separadamente para stdout; entre eles pode haver algum outro thread de gravação stdoutdevido ao qual a ordem da saída final fica confusa.