Domanda

" Letture sporche " ;, che significa leggere il valore di un oggetto anche se è bloccato in scrittura da un altro thread, sono descritto sul sito web di Terracotta, ma ho sentito che non dovrebbero essere usati, anche se non ti interessa la possibilità che potresti ottenere vecchi dati quando leggi sporco l'oggetto bloccato.

Qualcuno ha esperienza nell'uso di letture sporche in Terracotta e sono sicure da usare se non ti interessa la possibilità di leggere un vecchio valore?

È stato utile?

Soluzione

Una lettura sporca è una lettura sporca. La terracotta, essendo distribuita / raggruppata, aggiunge solo la possibilità di leggere anche valori più vecchi dello stato mutabile condiviso a cui si accede senza una corretta sincronizzazione.

Dovresti notare che, sotto il modello di memoria in Java 5, non sei sicuro di mai leggere un valore aggiornato se non usi la sincronizzazione corretta. La terracotta può decidere di sfruttare questa possibilità. In effetti, qualsiasi JVM può, a suo piacimento, trarne vantaggio. Anche se potrebbe funzionare sulla tua macchina, potrebbe rompersi su altre macchine. Potrebbe interrompersi su aggiornamenti minori di JVM e potrebbe interrompersi per la stessa versione della stessa JVM su una CPU diversa.

Con questo in mente, puoi dire che le letture sporche non sono sicure in nessuna JVM ... A meno che non ti dispiaccia la possibilità che non sarai mai in grado di leggere gli aggiornamenti che altri thread fanno - un situazione improbabile ma potrebbe accadere.

Inoltre, quando segui effettivamente il tuo link al wiki di Terracottas, si dice che l'articolo è stato rimosso e che lo schema è scoraggiato.

Altri suggerimenti

Sono uno sviluppatore di terracotta. L'essenza della risposta è proprio come già notato da Christian Vest Hansen: proprio come la JVM non fornisce garanzie sulla visibilità degli aggiornamenti di un oggetto condiviso a cui si accede senza una corretta sincronizzazione, allo stesso modo Terracotta non può fornire garanzie su letture sporche di un oggetto cluster.

Il collegamento è stato infatti volutamente rimosso e sostituito con un avvertimento di non utilizzare questo modello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top