Pourquoi je ne suis pas atomique en Java ?
En Java, l'opérateur i n'est pas atomique pour des raisons d'efficacité. L'atomicité, bien que souhaitable, entraîne une surcharge importante en matière de synchronisation logicielle et matérielle.
En rendant i non atomique, Java optimise l'exécution du code, évitant ainsi les coûts de synchronisation inutiles. Il est important de noter que dans la plupart des cas, l'atomicité n'est pas cruciale pour les opérations i.
De plus, la préservation de la compatibilité de Java avec C et C a joué un rôle dans cette décision de conception. L'atomicité aurait introduit une divergence dans la syntaxe et la sémantique, ce qui aurait pu dérouter les programmeurs passant des langages de type C à Java.
De plus, même au niveau des instructions machine, les opérations d'incrémentation atomique entraînent souvent des pénalités de performances. Sur l'architecture x86, un "préfixe de verrouillage" spécial est requis pour rendre l'instruction inc atomique. Ce coût ralentirait considérablement les incréments non atomiques, entraînant une surcharge inutile.
Certaines architectures de jeu d'instructions, telles que MIPS, n'ont pas du tout d'opérations d'incrémentation atomique natives. Dans de tels cas, les incréments atomiques nécessitent des boucles logicielles complexes utilisant des instructions liées à la charge (ll) et conditionnelles au stockage (sc) pour garantir la cohérence des données.
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!