IT-lexikon › Programmering › volatile

volatile

Programmering In English → Uppdaterad: 2026-11-02

Typkvalificerare i C och C++ som säger åt kompilatorn att varje läsning och skrivning av variabeln faktiskt måste ske.

Kompilatorn antar normalt att minnet bara ändras när programmet självt ändrar det. Därför kan en loop som väntar på en flagga optimeras till en evig loop, och två skrivningar i rad till samma adress slås ihop till en. För ett hårdvaruregister eller en flagga som ett avbrott sätter är båda optimeringarna förödande. volatile, som kom med ANSI C 1989, stänger av dem för just den variabeln.

Det är också allt det gör. volatile ger varken atomära operationer eller ordning gentemot andra variabler, och processorn kan fortfarande ordna om åtkomsterna. För trådar mellan kärnor behövs atomics och minnesbarriärer; Linuxkärnans dokumentation har ett eget kapitel med titeln "Why the volatile type class should not be used". Javas volatile är för övrigt något helt annat, med riktiga ordningsgarantier — samma ord, olika löften.

← Tillbaka till lexikonet