Sobes.tech
Junior — Middle

Обяснете принципите на работа на SpinLock и в кои сценарии се използва.

sobes.tech AI

Отговор от AI

SpinLock е примитив за синхронизация, който при опит да се вземе вече зает лок блокира нишката, без да преминава в състояние на изчакване (sleep), а изпълнява активен цикъл ("spin"), проверявайки наличността на локера.

Принцип на работа:

  • Нишката се опитва да вземе лок.
  • Ако локът е свободен, го взема и продължава.
  • Ако локът е зает, нишката проверява състоянието му в цикъл, без да преминава в режим на сън.

Кога да се използва:

  • Когато времето за изчакване на лок е много кратко, и преминаването към sleep/wakeup е по-скъпо.
  • В системи с ниска латентност и висока конкуренция.

Недостатъци:

  • При дълго изчакване, CPU ресурсите се губят напразно.

Пример в псевдокод:

while !atomic_compare_and_swap(&lock, 0, 1) {
    // активна изчакване
}
// критична секция
lock = 0