Sí, en x86 y x86-64, siempre que el valor que está leyendo esté alineado correctamente. 32 bits int
s, necesitan estar alineados en un límite de 4 bytes para que el acceso sea atomic al leer o escribir, que casi siempre será el caso a menos que salga de su camino para crear int
s no alineados (diga , utilizando una estructura empaquetada o haciendo aritmética de conversión/puntero con almacenamientos intermedios de bytes).
Probablemente también desee declarar su variable como volatile
para que el compilador genere código que recuperará la variable de la memoria cada vez que se acceda a ella. Eso evitará que realice optimizaciones como el almacenamiento en caché en un registro cuando podría ser alterado por otro hilo.
posible duplicado de [Son lecturas de C++ y escrituras de un int atomic] (http://stackoverflow.com/questions/54188/are-c-reads-and-writes-of-an-int-atomic) – Sjoerd