Sezione critica: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
DaimonBot (discussione | contributi)
m Orfanizzo Java (linguaggio)
Riga 3:
 
== Motivazione ==
Quando flussi diversi accedono ad una risorsa comune in tempi diversi, ognuno di essi può completare la propria operazione (lettura o scrittura) senza essere "disturbato" dagli altri. Se questa condizione vale ''sempre'' per una certa risorsa, allora si dice che la lettura e la scrittura su quella risorsa sono ''operazioni atomiche'': ogni flusso può intervenire solo prima o dopo che l'altro haabbia completato la propria operazione, e non può interromperla. Il termine "atomiche" è inteso nella sua accezione di "unitarie", "indivisibili". Se ''tutti'' gli accessi ad una risorsa sono atomici, allora non ci sono problemi di sincronizzazione.
 
Ad esempio, un programma per la copia di file potrebbe essere implementato con due thread: uno che copia i byte dal disco di origine verso la memoria RAM, e l'altro che contemporaneamente preleva i byte dalla memoria e li scrive nel disco di destinazione. Questo programma ottiene un vantaggio in velocità, perché sovrappone tra loro i [[tempo di latenza|tempi di latenza]] per l'accesso ai dischi, in modo che nessuno dei due risulti bloccato (quindi inutilizzato) a causa dell'altro.