Junior — Middle
Explica principiile de funcționare ale SpinLock și în ce scenarii este utilizat.
sobes.tech AI
Răspuns de la AI
SpinLock este o primitive de sincronizare care, atunci când încearcă să preia un lock deja ocupat, blochează firul de execuție fără a trece în stare de așteptare (sleep), ci execută un ciclu activ ("spin"), verificând disponibilitatea lock-ului.
Principiul de funcționare:
- Firul de execuție încearcă să preia lock-ul.
- Dacă lock-ul este liber, îl preia și continuă.
- Dacă lock-ul este ocupat, firul verifică starea sa într-un ciclu, fără a trece în modul de așteptare.
Când să folosiți:
- Când timpul de așteptare pentru lock este foarte scurt, iar trecerea la sleep/wakeup ar fi mai costisitoare.
- În sisteme cu latență scăzută și concurență ridicată.
Dezavantaje:
- În cazul unei așteptări lungi, consumă resurse CPU inutil.
Exemplu în pseudocod:
while !atomic_compare_and_swap(&lock, 0, 1) {
// așteptare activă
}
// secțiune critică
lock = 0