Un'operazione atomica si completa in modo indivisibile — nessun altro thread vede uno stato a metà; la visibilità della memoria è se le scritture di un thread sono viste da un altro; le memory barrier impongono l'ordinamento affinché quelle scritture diventino visibili. I lock non sono l'unica preoccupazione — lo è il memory model.
Atomicità
Un'operazione atomica (es. fetch_add, compare-and-swap) si esegue come un unico passo indivisibile, così nessuna race la spezza. Hardware e linguaggio forniscono atomiche per contatori e flag senza un lock completo.
();
counter.incrementAndGet();
