Junior — Middle
Wyjaśnij zasady działania SpinLock i w jakich scenariuszach jest stosowany.
sobes.tech AI
Odpowiedź od AI
SpinLock to prymityw synchronizacji, który podczas próby przejęcia już zajętego blokady blokuje wątek bez przechodzenia w stan oczekiwania (sleep), zamiast tego wykonując aktywny cykl ("spin"), sprawdzając dostępność blokady.
Zasada działania:
- Wątek próbuje przejąć blokadę.
- Jeśli blokada jest wolna, przejmuje ją i kontynuuje.
- Jeśli blokada jest zajęta, wątek sprawdza jej stan w pętli, nie przechodząc w tryb uśpienia.
Kiedy stosować:
- Gdy czas oczekiwania na blokadę jest bardzo krótki, a przejście do sleep/wakeup byłoby droższe.
- W systemach o niskim opóźnieniu i dużej konkurencji.
Wady:
- Przy długim oczekiwaniu marnuje zasoby CPU.
Przykład w pseudokodzie:
while !atomic_compare_and_swap(&lock, 0, 1) {
// aktywne oczekiwanie
}
// sekcja krytyczna
lock = 0