Назад к вопросам
Яндекс Маркет
Junior — Middle
74
Объясните принципы работы SpinLock и в каких сценариях он применяется.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
SpinLock — это примитив синхронизации, который при попытке захватить уже занятый лок блокирует поток не переходя в состояние ожидания (sleep), а выполняет активный цикл ("крутится" — spin), проверяя доступность локера.
Принцип работы:
- Поток пытается захватить лок.
- Если лок свободен — захватывает и продолжает работу.
- Если лок занят — поток в цикле проверяет его состояние, не переходя в спящий режим.
Когда применять:
- Когда время ожидания локера очень короткое, и переход в sleep/wakeup будет дороже.
- В системах с низкой задержкой и высокой конкуренцией.
Недостатки:
- При долгом ожидании тратит CPU ресурсы впустую.
Пример на псевдокоде:
while !atomic_compare_and_swap(&lock, 0, 1) {
// активное ожидание
}
// критическая секция
lock = 0