Si estoy accediendo a un único tipo de entero (por ejemplo, largo, int, bool, etc.) en múltiples hilos, necesito usar un mecanismo de sincronización como un mutex para bloquearlos. Según tengo entendido, como tipos atómicos, no necesito bloquear el acceso a un único hilo, pero veo que hay muchos códigos que sí usan el bloqueo. Hacer un perfil de este código muestra que hay un impacto significativo en el rendimiento para usar bloqueos, por lo que preferiría no hacerlo. Entonces, si el elemento al que estoy accediendo corresponde a un entero de ancho de bus (por ejemplo, 4 bytes en un procesador de 32 bits) ¿necesito bloquear el acceso a él cuando se usa en múltiples hilos? Dicho de otra manera, si el hilo A está escribiendo en la variable entera X al mismo tiempo que el hilo B lee de la misma variable, es posible que el hilo B pueda terminar unos bytes del valor anterior mezclado con unos pocos bytes de el valor está siendo escrito? ¿Es dependiente de esta arquitectura, p. ¿Está bien para enteros de 4 bytes en sistemas de 32 bits pero inseguros en enteros de 8 bytes en sistemas de 64 bits?¿Debo usar el bloqueo con números enteros en los hilos C++
Edit: Acabo de ver esto related post que ayuda un poco.
Gracias por esto, InterlockedExchange es probablemente la función que estoy buscando, ya que solo un hilo realmente escribe en la variable en cuestión, mientras que otros simplemente lo leen. –