Les lectures et écritures C d'un int sont-elles atomiques ?
La question concerne l'atomicité des opérations de lecture et d'écriture d'entiers en C . L'atomicité garantit que l'opération se déroule comme une seule unité indivisible, garantissant qu'aucune interruption ne se produit pendant le processus.
La réponse à cette question dépend de l'architecture du système. Sur les processeurs tels que IA32, les écritures alignées sur les entiers sont généralement atomiques. Cependant, les écritures non alignées peuvent ne pas être atomiques selon le système de mise en cache utilisé. Si la mémoire réside dans une seule ligne de cache, l'atomicité est conservée ; sinon, ce n'est pas le cas.
De plus, la largeur du bus entre le CPU et la RAM peut influencer l'atomicité. Dans le cas des processeurs plus anciens comme le 8086 avec un bus 16 bits, les écritures alignées sur 16 bits étaient atomiques, alors que le même fonctionnement n'était pas garanti sur le 8088 avec un bus 8 bits.
Pour C/ Dans les programmes C, il est crucial de déclarer les valeurs partagées comme volatiles. Cela empêche l'optimiseur de supposer que la variable ne sera pas modifiée dans un thread, garantissant ainsi que la valeur réelle est toujours lue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!