Leksykon IT › Programowanie › volatile

volatile

Programowanie Svenska → Zaktualizowano: 2026-11-02

Kwalifikator typu w C i C++, który nakazuje kompilatorowi faktycznie wykonać każdy odczyt i zapis zmiennej.

Kompilatory zwykle zakładają, że pamięć zmienia się tylko wtedy, gdy zmienia ją program. Dlatego pętla czekająca na flagę może zostać zoptymalizowana do pętli nieskończonej, a dwa kolejne zapisy pod ten sam adres scalone w jeden. Dla rejestru sprzętowego albo flagi ustawianej w przerwaniu obie optymalizacje są zabójcze. volatile, wprowadzone z ANSI C w 1989 roku, wyłącza je dla tej jednej zmiennej.

I na tym koniec. Nie daje atomowości ani kolejności względem innych zmiennych, a procesor nadal może zmieniać kolejność dostępów. Wątki na wielu rdzeniach potrzebują atomików i barier pamięci; dokumentacja jądra Linuksa ma całą stronę zatytułowaną „Why the volatile type class should not be used”. volatile w Javie to zresztą zupełnie inne zwierzę z prawdziwymi gwarancjami kolejności — to samo słowo, inne obietnice.

← Wróć do leksykonu