Si una sola variable de 32 bits se comparte entre varios subprocesos, ¿debo poner un bloqueo de exclusión mutua alrededor de la variable? Por ejemplo, supongamos que 1 hilo escribe en un contador de 32 bits y lo lee un segundo hilo. ¿Hay alguna posibilidad de que el segundo hilo pueda leer un valor dañado?¿Debo bloquear mutex una sola variable?
Estoy trabajando en un sistema embebido ARM de 32 bits. El compilador siempre parece alinear las variables de 32 bits para que puedan leerse o escribirse con una sola instrucción. Si la variable de 32 bits no estaba alineada, entonces la lectura o escritura se dividiría en varias instrucciones y el segundo subproceso podría leer un valor dañado.
¿La respuesta a esta pregunta cambia si cambio a un sistema de núcleo múltiple en el futuro y la variable se comparte entre los núcleos? (suponiendo un caché compartido entre los núcleos)
¡Gracias!
¿Le importan las carreras o le preocupa que se rompa? –
Una vez que se haya asegurado de que la rotura no ocurre, recuerde no escribir 'i ++', o 'i + = j' sin un mutex. –
Gracias por el comentario sobre lagrimeo: no sabía que así se llamaba. Me pregunto qué es "estándar" y/o qué es "buena práctica" para evitar las condiciones de desgarro y carrera. – Will