Lessico IT › Programmazione › volatile

volatile

Programmazione Svenska → Aggiornato: 2026-11-02

Un qualificatore di tipo di C e C++ che indica al compilatore che ogni lettura e scrittura della variabile deve avvenire davvero.

Di norma i compilatori presumono che la memoria cambi solo quando è il programma a modificarla. Così un ciclo che attende un flag può essere ottimizzato in un ciclo infinito, e due scritture consecutive allo stesso indirizzo fuse in una. Per un registro hardware, o per un flag impostato da un interrupt, entrambe le ottimizzazioni sono fatali. volatile, introdotto con l'ANSI C nel 1989, le disattiva per quella singola variabile.

E fa solo questo. Non fornisce atomicità né ordinamento rispetto ad altre variabili, e la CPU resta libera di riordinare gli accessi. Per i thread su più core servono operazioni atomiche e barriere di memoria; la documentazione del kernel Linux dedica un'intera pagina al tema «Why the volatile type class should not be used». Il volatile di Java, per inciso, è tutt'altra bestia, con garanzie di ordinamento reali: stessa parola, promesse diverse.

← Torna al lessico