Sobes.tech
Назад к вопросам
Junior — Middle
74

Объясните принципы работы SpinLock и в каких сценариях он применяется.

Компании, где спрашивали
Яндекс МаркетЯндекс Маркет

Ответ от нейросети

sobes.tech AI

SpinLock — это примитив синхронизации, который при попытке захватить уже занятый лок блокирует поток не переходя в состояние ожидания (sleep), а выполняет активный цикл ("крутится" — spin), проверяя доступность локера.

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

  • Поток пытается захватить лок.
  • Если лок свободен — захватывает и продолжает работу.
  • Если лок занят — поток в цикле проверяет его состояние, не переходя в спящий режим.

Когда применять:

  • Когда время ожидания локера очень короткое, и переход в sleep/wakeup будет дороже.
  • В системах с низкой задержкой и высокой конкуренцией.

Недостатки:

  • При долгом ожидании тратит CPU ресурсы впустую.

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

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