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