Se produit avant la cohérence : une compréhension approfondie
Question 1 : Comprendre la définition
La définition donnée de la cohérence qui se produit avant indique que pour un ensemble d'actions A, si une action de lecture r dans A voit une action d'écriture W(r), alors il ne peut pas être vrai que hb(r, W(r) ) ou qu'il existe une écriture w dans A telle que w.v = r.v et hb(W(r), w) et hb(w, r). Votre compréhension selon laquelle cela équivaut à "..., il est vrai que ni ... ni..." n'est correcte.
Question 2 : Signification de "w.v = r.v"
"w.v = r.v" indique que la valeur de l'action de lecture r (représentée par r.v) est égale à la valeur de l'action d'écriture w (représentée par w.v).
Question 3 : Signification des nombres de gauche dans les ordres d'exécution
Les nombres de gauche dans les ordres d'exécution représentent l'ordre séquentiel des actions au sein de chaque thread. Par exemple, dans le premier ordre d'exécution, "1 : B = 1" indique que la première action dans le thread 1 est l'écriture dans la variable B.
Question 4 : Visibilité des variables non volatiles
Votre compréhension que r2 et r1 peuvent voir des valeurs d'écriture initiales de 0 car A et B ne sont pas des champs volatils est correcte. Les variables non volatiles peuvent être stockées dans des registres, les rendant potentiellement invisibles aux autres threads pendant une période prolongée.
Question 5 : se produit avant la cohérence dans le deuxième ordre d'exécution
Le deuxième ordre d'exécution est en effet cohérent. Les lectures r2 et r1 se produisent respectivement après les écritures dans A et B, et aucune action intermédiaire ne viole la relation qui se produit avant.
Question 6 : Situations du monde réel avec lecture après- Écrire
Dans les applications du monde réel, des situations de lecture après écriture peuvent se produire dans divers scénarios. Par exemple, considérons une application multithread dans laquelle un thread modifie un objet partagé et un autre thread lit le même objet sans synchronisation. Sans mécanismes appropriés comme les variables volatiles ou la synchronisation, le fil de lecture peut finir par voir une valeur obsolète.
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!