esclarecimentos sobre barreiras de memória total envolvidas por mutexes pthread

Ouvi dizer que, ao lidar com mutexes, as barreiras de memória necessárias são tratadas pela própria API pthread. Eu gostaria de ter mais detalhes sobre este assunto.

Essas afirmações são verdadeiras, pelo menos nas arquiteturas mais comuns?O compilador reconhece essa barreira implícita e evita a reordenação de operações / leitura de registros locais ao gerar o código?Quando é aplicada a barreira de memória: depois de adquirir com sucesso um mutex E depois de liberá-lo?

questionAnswers(1)

yourAnswerToTheQuestion