Pregunta

" Lecturas sucias " ;, lo que significa leer el valor de un objeto a pesar de que está bloqueado por otro hilo, son descrito en el sitio web de Terracotta, sin embargo, he oído que no deberían usarse, incluso si no le importa la posibilidad de que pueda obtener datos antiguos cuando lees sucio el objeto bloqueado.

¿Alguien tiene alguna experiencia en el uso de lecturas sucias en terracota, y son seguros de usar si no le importa la posibilidad de leer un valor antiguo?

¿Fue útil?

Solución

Una lectura sucia es una lectura sucia. La terracota, que se distribuye / agrupa, solo agrega la posibilidad de leer valores aún más antiguos del estado mutable compartido al que está accediendo sin la sincronización adecuada.

Debe tener en cuenta que, según el modelo de memoria en Java 5, no se garantiza que nunca lea un valor actualizado si no utiliza la sincronización adecuada. La terracota puede decidir aprovechar esta posibilidad. De hecho, cualquier JVM puede, a su gusto, aprovecharlo. Incluso si funciona en su máquina, puede romperse en otras máquinas. Puede romperse en actualizaciones menores de la JVM, y puede romperse para la misma versión de la misma JVM en una CPU diferente.

Con eso en mente, puede decir que las lecturas sucias no son seguras en ninguna JVM ... A menos que no le importe la posibilidad de que nunca podrá leer las actualizaciones que hacen otros hilos, un situación poco probable pero podría suceder.

Además, cuando realmente sigues tu enlace a la wiki de Terracottas, dice que el artículo ha sido eliminado y que el patrón se desaconseja.

Otros consejos

Soy un desarrollador de terracota. La esencia de la respuesta es tal como Christian Vest Hansen ya lo señaló: al igual que la JVM no garantiza la visibilidad de las actualizaciones de un objeto compartido al que se accede sin una sincronización adecuada, Terracotta tampoco puede garantizar la lectura sucia de un objeto agrupado.

De hecho, el enlace se ha eliminado y reemplazado a propósito con una advertencia para no usar este patrón.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top