Contrairement à une croyance répandue dans les modèles de concurrence, Stroustrup affirme que le matériel moderne est incapable de stocker ou de charger quelque chose de plus petit qu'un mot. Cependant, les processeurs x86 modernes permettent le stockage et la manipulation d'octets individuels. Cette contradiction apparente incite à examiner la déclaration de Stroustrup et ses implications.
Stroustrup suggère que sans un modèle de mémoire clairement défini, les threads concurrents pourraient interférer les uns avec les autres opérations de manipulation d'octets. , conduisant potentiellement à des résultats incorrects. Cet argument suppose un matériel qui ne prend pas en charge explicitement le stockage des octets atomiques et peut conduire à une modification involontaire des octets voisins.
Une interprétation plus nuancée de la déclaration de Stroustrup est qu'elle pourrait s'appliquer au matériel avec une implémentation interne spécifique. Les processeurs peuvent utiliser des cycles de lecture-modification-écriture pour manipuler les données dans les lignes de cache, même pour des opérations de la taille d'un octet. Cependant, ces opérations internes sont transparentes pour le programmeur et n'affectent pas la visibilité externe de l'opération. Les magasins d'octets restent atomiques et ne corrompent pas les octets adjacents dans la ligne de cache.
Bien qu'un hypothétique ISA sans magasins d'octets atomiques puisse effectivement exister, tous les ISA modernes, y compris x86, fournissent des octets -chargement dimensionné et instructions de stockage. Ces instructions sont définies architecturalement pour préserver l'intégrité des octets voisins, garantissant ainsi une exécution correcte du programme. De plus, sur les processeurs modernes dotés d'un cache L1D, la gestion des octets et des mots est largement similaire, car les deux nécessitent des récupérations et des écritures de lignes de cache.
Déclaration de Stroustrup, bien que potentiellement applicable à conceptions matérielles hypothétiques ou obsolètes, ne reflète pas avec précision le comportement des processeurs x86 modernes. Ces processeurs fournissent un stockage d'octets atomiques efficace, garantissant l'exactitude des logiciels qui reposent sur de telles opérations. Ainsi, dans le contexte de la programmation pour le matériel moderne, il n'y a pas lieu de craindre que la manipulation d'octets puisse entraîner une corruption de la mémoire.
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!