Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur de cohérence de mémoire

4 réponses
Avatar
mei
Bonjour,
Dans le tutoriel sur la programmation concurrente de Sun
(http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html),
on explique qu'il faut faire attention à 2 problèmes:
- l'interférence des threads dues à l'entrelacement des instructions
- les problèmes de cohérence de la mémoire
Ils expliquent que les raisons des vues incohérentes dépassent le cadre
de ce tutorial et je ne suis pas parvenu à trouver plus d'information à
ce sujet.
Ainsi est-ce que quelqu'un saurait me dire dans quel cas on pourrait
avoir une telle incohérence lorsque le non-entrelacement des
instructions est garanti (usage de volatile)?
Merci d'avance.

4 réponses

Avatar
TestMan
Bonjour,
Dans le tutoriel sur la programmation concurrente de Sun
(http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html),
on explique qu'il faut faire attention à 2 problèmes:
- l'interférence des threads dues à l'entrelacement des instructions
- les problèmes de cohérence de la mémoire
Ils expliquent que les raisons des vues incohérentes dépassent le cadre
de ce tutorial et je ne suis pas parvenu à trouver plus d'information à
ce sujet.
Ainsi est-ce que quelqu'un saurait me dire dans quel cas on pourrait
avoir une telle incohérence lorsque le non-entrelacement des
instructions est garanti (usage de volatile)?
Merci d'avance.


http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.3.1.4

« Un champ peut être déclaré volatile, dans un tel cas le modèle mémoire
de Java s'assurera que chaque fil voit une valeur cohérente de la variable »

A+
TM

Avatar
mei
Bonjour,
Dans le tutoriel sur la programmation concurrente de Sun
(http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html),
on explique qu'il faut faire attention à 2 problèmes:
- l'interférence des threads dues à l'entrelacement des instructions
- les problèmes de cohérence de la mémoire
Ils expliquent que les raisons des vues incohérentes dépassent le
cadre de ce tutorial et je ne suis pas parvenu à trouver plus
d'information à ce sujet.
Ainsi est-ce que quelqu'un saurait me dire dans quel cas on pourrait
avoir une telle incohérence lorsque le non-entrelacement des
instructions est garanti (usage de volatile)?
Merci d'avance.


http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.3.1.4

« Un champ peut être déclaré volatile, dans un tel cas le modèle mémoire
de Java s'assurera que chaque fil voit une valeur cohérente de la
variable »

A+
TM


Bonsoir TM et merci d'avoir pris la peine de répondre.
Est-ce que tu comprends donc comme moi que cette phrase tend à faire
penser qu'il ne peut y avoir d'incohérence mémoire avec un volatile ?


Avatar
mei
Bonjour,
Dans le tutoriel sur la programmation concurrente de Sun
(http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html),
on explique qu'il faut faire attention à 2 problèmes:
- l'interférence des threads dues à l'entrelacement des instructions
- les problèmes de cohérence de la mémoire
Ils expliquent que les raisons des vues incohérentes dépassent le
cadre de ce tutorial et je ne suis pas parvenu à trouver plus
d'information à ce sujet.
Ainsi est-ce que quelqu'un saurait me dire dans quel cas on pourrait
avoir une telle incohérence lorsque le non-entrelacement des
instructions est garanti (usage de volatile)?
Merci d'avance.


http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.3.1.4


« Un champ peut être déclaré volatile, dans un tel cas le modèle
mémoire de Java s'assurera que chaque fil voit une valeur cohérente de
la variable »

A+
TM


Bonsoir TM et merci d'avoir pris la peine de répondre.
Est-ce que tu comprends donc comme moi que cette phrase tend à faire
penser qu'il ne peut y avoir d'incohérence mémoire avec un volatile ?


Je me rend compte que ma question initiale n'était pas forcément très
claire. En fait, ce que je n'avais pas compris dans le tutorial de Sun
dont je donnais le lien (section "Atomic Access"), c'était la phrase
suivante:
"Atomic actions cannot be interleaved, so they can be used without fear
of thread interference. However, this does not eliminate all need to
synchronize atomic actions, because memory consistency errors are still
possible."
Les actions atomiques ne peuvent pas s'entrelacer, donc elles peuvent
être utilisées sans se soucier des interférences de thread. Cependant,
ça n'élimine pas le besoin de synchroniser les actions atomiques, car
les erreurs de cohérence mémoire sont toujours possibles.



Avatar
Eric Razny
Le Thu, 15 Feb 2007 09:35:15 +0100, TestMan a écrit :

http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.3.1.4

« Un champ peut être déclaré volatile, dans un tel cas le modèle mémoire
de Java s'assurera que chaque fil voit une valeur cohérente de la variable »


Salut.
A une époque volatile pouvait être mal ou non-implémenté dans
certaines JVM. Je ne sais pas si c'est toujours le cas, mais dans le doute... :)