Sobes.tech
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