Aclaraciones sobre las barreras de memoria completa involucradas por mutexes pthread

He escuchado que cuando se trata de mutexes, las barreras de memoria necesarias son manejadas por la propia API pthread. Me gustaría tener más detalles sobre este asunto.

¿Son ciertas estas afirmaciones, al menos en las arquitecturas más comunes?¿Reconoce el compilador esta barrera implícita, y evita la reordenación de las operaciones / lectura de los registros locales cuando se genera el código?¿Cuándo se aplica la barrera de memoria: después de adquirir con éxito un mutex Y después de liberarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta