Cohérence qui se produit avant
En Java, la relation qui se produit avant définit l'ordre dans lequel les actions dans différents threads peuvent se produire. Un ensemble d'actions est cohérent avant si aucune action de lecture dans cet ensemble ne voit une action d'écriture qui se produit logiquement après ou simultanément avec lui.
Interprétation de la définition
Vous avez raison de comprendre que la définition se traduit par : "... il est vrai que ni ... ni..." :
Ni l'un ni l'autre.. . : hb(r, W(r))
Nor... : Il existe une écriture w dans A telle que :
Exemple : Exécution de thread
Dans l'exemple donné :
Situations du monde réel
Oui, la situation dans laquelle les lectures peuvent voir les écritures qui se produisent plus tard (valeurs obsolètes) peut effectivement exister dans la programmation du monde réel. Voici un exemple :
Imaginez une application multithread dans laquelle un thread écrit des données sur une ressource partagée et d'autres threads lisent à partir de celle-ci. Sans mécanismes de synchronisation appropriés, il est possible qu'un thread de lecture s'exécute avant que le thread d'écriture n'ait fini d'écrire. Cela peut amener le fil de discussion à voir une valeur obsolète.
Prévenir de telles situations :
Les champs volatiles garantissent que les lectures et les écritures se produisent dans un ordre cohérent et que tous les fils voient la même valeur. En effet, les lectures volatiles forcent le processeur à accéder à la mémoire principale, contournant ainsi tout mécanisme de mise en cache susceptible d'introduire des incohérences.
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!