sto vedendo questo nelle specifiche Java:java riordino e la memoria modello
se X e Y sono le azioni di uno stesso filo e x viene prima y al fine programma, quindi x accade prima di y.
e anche questo
codice originale
filettatura 1
r2 = A;
B = 1;
valida compilatore trasformazione (compilatori possono riordinare le istruzioni in entrambi filo, quando questo non pregiudica l'esecuzione di tale filo in isolamento)
filettatura 1
B = 1;
r2 = A;
Sono confuso con queste due cose.
se un'azione x precede un'azione y allora x dovrebbe accadere prima di y. se consideriamo r2 = A per xe B = 1 per y, r2 = A dovrebbe accadere prima di B = 1. Come può esserci un qualsiasi riordino, come mai B = 1 viene eseguito prima di r2 = A se x accade prima che y sia vero ?.
In base a ciò che dice JLS: La JIT decide che un * Happens before * non è necessario se non c'è dipendenza tra due eventi (se sono indipendenti) giusto ?. Questo paragrafo punta alle ottimizzazioni JIT corrette? – TheLostMind
@TheLostMind: beh, ottimizzazioni JIT o solo JIT non * rimozione * Ottimizzazioni CPU –
In tal caso, * alla fine *, a * accade prima * non esiste. Sento l'odore della * analisi di fuga * in questo: P – TheLostMind