Exemplo de C ++ “barreira de memória” [duplicado]
Esta questão já tem uma resposta aqui:
Barreiras de memória C ++ para o Atomics 2 respostasEu estava lendo a resposta a essa pergunta sobre a palavra-chave volátil:
https://stackoverflow.com/a/2485177/997112
A pessoa diz:
A solução para evitar a reordenação é usar uma barreira de memória, que indica ao compilador e à CPU que nenhum acesso à memória pode ser reordenado nesse ponto. Colocar tais barreiras em torno de nosso acesso variável e volátil garante que até mesmo acessos não voláteis não sejam reordenados em todo o volátil, permitindo-nos escrever código seguro para thread.
No entanto, as barreiras de memória também garantem que todas as leituras / gravações pendentes sejam executadas quando a barreira é alcançada, de modo que efetivamente nos fornece tudo o que precisamos por si só, tornando a volatilidade desnecessária. Podemos apenas remover o qualificador volátil inteiramente.
Como essa "barreira de memória" é implementada em C ++?
EDITAR:
Alguém poderia dar um exemplo de código simples, por favor?