Capisco read-acquire (non riordina con successive operazioni di lettura/scrittura dopo di esso) e write-release (non riordina con operazioni di lettura/scrittura che lo precedono). mio q è: -Java volatile legge le scritture di svuotamento e fa letture di aggiornamento di scrittura volatile
- In caso di lettura acquisiscono, fare le scritture che lo precedono ottenere arrossato?
- In caso di write-release, le letture precedenti vengono aggiornate?
Inoltre, è in lettura-acquisizione come lettura volatile, e lo stesso rilascio di scrittura volatile in Java?
Perché questo è importante è che, prendiamo caso di scrittura-release ..
y = x; // a read.. let's say x is 1 at this point
System.out.println(y);// 1 printed
//or you can also consider System.out.println(x);
write_release_barrier();
//somewhere here, some thread sets x = 2
ready = true;// this is volatile
System.out.println(y);// or maybe, println(x).. what will be printed?
A questo punto, è x 2 o 1? Qui, considera pronto per essere volatile. Capisco che tutti i negozi prima di volatile saranno prima resi visibili .. e quindi solo il volatile sarà reso visibile. Grazie.
Ref: - http://preshing.com/20120913/acquire-and-release-semantics/