Sobes.tech
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