Les «lectures sales» peuvent-elles être utilisées en toute sécurité dans Terracotta?

StackOverflow https://stackoverflow.com/questions/141090

Question

"Dirty reads", c'est-à-dire lire la valeur d'un objet même s'il est verrouillé en écriture par un autre thread, sont décrit sur le site Web de Terracotta, mais j'ai entendu dire qu'ils ne devraient pas être utilisés, même si vous ne vous inquiétez pas de la possibilité que vous obteniez d'anciennes données. lorsque vous lisez de manière incorrecte l'objet verrouillé.

Quelqu'un a-t-il déjà utilisé des lectures sales dans Terracotta et est-il sûr de les utiliser si vous ne vous souciez pas de la possibilité de lire une ancienne valeur?

Était-ce utile?

La solution

Une lecture sale est une lecture sale. La terre cuite, étant distribuée / en cluster, ajoute seulement la possibilité de lire des valeurs encore plus anciennes de l’état mutable partagé auquel vous accédez sans synchronisation appropriée.

Notez que, dans le modèle de mémoire de Java 5, il n'est pas garanti que jamais lise une valeur mise à jour si vous n'utilisez pas la synchronisation correcte. Terracotta peut décider de tirer parti de cette possibilité. En fait, toute machine virtuelle Java peut en profiter à loisir. Même si cela peut fonctionner sur votre machine, il peut se casser sur d'autres machines. Cela peut se produire lors de mises à jour mineures de la machine virtuelle Java et pour la même version de la même machine virtuelle sur un processeur différent.

Dans cet esprit, vous pouvez dire que les lectures de données incorrectes ne sont pas sûres dans une machine virtuelle Java ... À moins que vous ne craignez pas la possibilité que vous ne puissiez jamais lire les mises à jour que d'autres threads font - une situation improbable, mais cela pourrait arriver.

En outre, lorsque vous suivez votre lien vers le wiki de Terracottas, il est indiqué que l'article a été supprimé et que le modèle est déconseillé.

Autres conseils

Je suis un développeur Terracotta. Christian Vest Hansen a déjà souligné le sens de la réponse: de même que la JVM ne donne aucune garantie quant à la visibilité des mises à jour d'un objet partagé auquel on accède sans synchronisation appropriée, Terracotta ne peut pas non plus garantir les lectures sales d'un fichier. objet en cluster.

Le lien a bien été supprimé et remplacé par un avertissement de ne pas utiliser ce modèle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top