Sobes.tech
Middle+

Do czego służy słowo kluczowe volatile w programowaniu?

sobes.tech AI

Odpowiedź od AI

volatile jest używane do wskazania kompilatorowi i procesorowi, że wartość zmiennej może być zmieniona przez niezależny wątek wykonawczy lub zdarzenie zewnętrzne w stosunku do bieżącego wykonania procesora (np. urządzenie wejścia/wyjścia).

Zastosowania:

  1. Wielowątkowość: Zapewnia, że za każdym razem, gdy odwołujemy się do zmiennej, jej wartość jest odczytywana z pamięci operacyjnej, a nie z rejestru procesora lub pamięci podręcznej. Zapobiega to optymalizacjom kompilatora, które mogą prowadzić do nieaktualnych wartości w środowiskach wielowątkowych.
  2. Interakcja z hardware: Używane dla zmiennych odzwierciedlających stan rejestrów sprzętowych lub portów wejścia/wyjścia, których wartość może się zmieniać w sposób nieprzewidywalny.

W Swift i Objective-C volatile jest używane podobnie jak w C/C++.

Przykład użycia w C/Objective-C:

volatile int sharedFlag; // Wspólna zmienna dostępna z różnych wątków