Maison >développement back-end >C++ >Les processeurs x86 modernes ne peuvent-ils vraiment pas stocker de manière atomique un seul octet en mémoire ?
Le matériel x86 moderne ne peut-il pas stocker un seul octet en mémoire ?
La déclaration de Stroustrup dans son livre fait référence au comportement potentiel d'un matériel hypothétique sans un modèle de mémoire bien défini. Il suggère qu'un tel matériel pourrait implémenter des magasins d'octets avec des mises à jour non atomiques, affectant potentiellement les octets voisins.
Comportement réel du matériel moderne
Cependant, le matériel moderne, y compris x86, ne se comporte pas de la manière décrite par Stroustrup :
Contexte historique
La déclaration de Stroustrup peut avoir été basée sur le comportement des premiers processeurs Alpha AXP, qui ne prenaient pas initialement en charge les instructions de chargement/stockage d'octets. . Cependant, les versions ultérieures d'Alpha et tous les processeurs modernes prennent en charge des magasins d'octets sûrs et efficaces.
Implémentation matérielle
Les processeurs modernes utilisent généralement des caches qui stockent des segments de mémoire. Dans un système mis en cache :
Exceptions
Bien que les processeurs modernes fournissent des magasins d'octets atomiques, il peut y avoir des exceptions dans certaines situations :
Conclusion
En pratique, le matériel moderne prend en charge les magasins d'octets atomiques, ce qui rend la description de Stroustrup du matériel potentiel comportement moins pertinent pour les systèmes réels. Les garanties du modèle de mémoire fournies par les compilateurs C reposent sur le comportement fiable du matériel moderne pour garantir la sécurité des threads.
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!