2012-06-23 9 views

Respuesta

10

Desbloqueo de un mutex se sincroniza con el bloqueo de la exclusión mutua. No sé qué opciones tiene el compilador para la implementación, pero obtienes el mismo efecto de una valla.

+1

Creo que el OP está preguntando acerca de la esgrima para otras ubicaciones de memoria que no sea el mutex en sí. – Mysticial

+2

No entiendo. Las vallas en C++ no afectan las ubicaciones de memoria específicas. –

+5

Estoy diciendo esto: supongamos que Core A escribe en 'A [0]' y luego libera el mutex. Luego, Core B adquiere el mutex y lee 'A [0]' (antes de que la coherencia del caché pueda propagar el nuevo valor de 'A [0]' al núcleo B). En otras palabras, ¿un mutex fuerza a todas las ubicaciones de memoria a subir? hasta la fecha antes de regresar. – Mysticial

10

Según entiendo Esto se trata en:

1,10 ejecuciones y razas de datos-Multi roscado

Para 5:

La biblioteca define un número de operaciones atómicas (Cláusula 29) y operaciones en mutexes (Cláusula 30) que se identifican especialmente como operaciones de sincronización. Estas operaciones desempeñan un papel especial al hacer asignaciones en un hilo visibles para otro. Una operación de sincronización en una o más ubicaciones de memoria es una operación de consumo, una operación de adquisición, una operación de liberación o ambas, una operación de adquisición y liberación. Una operación de sincronización sin una ubicación de memoria asociada es una valla y puede ser una valla de adquisición, una valla de liberación o una valla de adquisición y liberación. Además, hay operaciones atómicas relajadas, que no son operaciones de sincronización, y operaciones atómicas de lectura, modificación y escritura, que tienen características especiales. [Nota: Por ejemplo, una llamada que adquiere un mutex realizará una operación de adquisición en las ubicaciones que comprenden el mutex. En consecuencia, una llamada que libera el mismo mutex realizará una operación de lanzamiento en esas mismas ubicaciones. Informalmente, realizar una operación de liberación en A obliga a que los efectos secundarios anteriores en otras ubicaciones de memoria se vuelvan visibles para otros hilos que luego realizan un consumo o una operación de adquisición en A. Las operaciones atómicas "relajadas" no son operaciones de sincronización aunque, al igual que las operaciones de sincronización no pueden contribuir a las carreras de datos. -finalizar nota]