Ho bisogno di aiuto per capire la sincronizzazione con la relazione. Più lo sto leggendo cercando di capire un esempio, più sento di non capire nulla. A volte sento che è così, ce l'ho, ma dopo aver visto un altro esempio mi confondo ancora. Per favore aiutami a farlo bene.sincronizza-con, accade-prima relazione e semantica acquisizione-rilascio
Si dice che un'operazione A si sincronizzi con un'operazione B se A è un negozio ad una variabile atomica m, con semantica di rilascio, B è un carico dalla stessa variabile m, con semantica acquisita, e B legge il valore memorizzate da A. si dice anche che un'operazione un accade-prima di un'operazione B se
- a viene eseguita sullo stesso thread come B, e a è prima B in ordine di programma, o
- a sincronizza -con B, o
- Un evento-prima di qualche altra operazione C, e C succede-prima di B
OK. Se guardiamo questo esempio
thread0 esegue | thread1 esegue
store x (rilascio) | caricare x (acquisire)
memorizza in x qui sincronizzare con carico da x? Se abbiamo sincronizzato -con relazione qui, quindi memorizza in x succede prima di caricare da x, quindi tutto ciò che è sequenziato prima di memorizzare in x nel thread 0 accade-prima di caricare da x nel thread 1. Significa che qui c'è un ordine forzato. È giusto? Ma in questo caso non capisco cosa significa "e B legge il valore memorizzato da A" parte della definizione significa? Se il thread 1 è più veloce, il thread 0 potrebbe leggere il vecchio valore. Quindi qual è la relazione qui e c'è qualche relazione? Se non c'è, come posso fornire quella relazione?
Grazie in anticipo.
un grande articolo è qui http://preshing.com/20130823/the-synchronizes-with-relation/ – camino