Compartilhar via


Segurança do thread na biblioteca C++ padrão

As seguintes regras de segurança do thread se aplicam a todas as classes na biblioteca C++ padrão (exceto shared_ptr iostream classes e, conforme descrito abaixo).

Um único objeto é thread-safe para leitura de vários threads.Por exemplo, devido a um objeto A, é seguro ler a thread 1 e thread 2 simultaneamente.

Se um único objeto que está sendo gravado em por um segmento, em seguida, todos os lê e grava a esse objeto no mesmo ou outros segmentos devem ser protegidos.Por exemplo, devido a um objeto A, se o thread 1 estiver gravando A, em seguida, o thread 2 deve ser impedido de leitura ou gravação a.

É seguro para leitura e gravação para uma instância de um tipo, mesmo que outro thread é ler ou gravar uma instância diferente do mesmo tipo.Por exemplo, dada a e b do mesmo tipo de objetos, é seguro se a está sendo gravada no thread 1 e b está sendo lido no thread 2.

shared_ptr

Vários threads simultaneamente podem ler e gravar diferentes shared_ptr objetos, mesmo quando os objetos são cópias que compartilham a propriedade.

Classes de iostream

As classes iostream siga as mesmas regras que as outras classes, com uma exceção.É seguro gravar um objeto de vários segmentos.Por exemplo, o thread 1 pode gravar em cout ao mesmo tempo como thread 2.No entanto, isso pode resultar na saída de dois segmentos que estão sendo misturados.

ObservaçãoObservação

Ler a partir de um buffer de fluxo não é considerado para ser uma operação de leitura.Ele deve ser considerado como uma operação de gravação, pois isso altera o estado da classe.

Consulte também

Referência

Visão geral da biblioteca C++ padrão