Sobes.tech
Junior — Middle

Објасните принципе рада SpinLock-а и у којим сценаријима се примењује.

sobes.tech АИ

Одговор од АИ

SpinLock je primitivan mehanizam za sinhronizaciju koji, pokušavajući da preuzme već zauzeti zaključavanje, blokira nit bez prelaska u stanje čekanja (sleep), već izvršava aktivni ciklus ("spin"), proveravajući dostupnost zaključavanja.

Princip rada:

  • Nit pokušava da preuzme zaključavanje.
  • Ako je zaključavanje slobodno, preuzima ga i nastavlja.
  • Ako je zaključavanje zauzeto, nit u petlji proverava njegovo stanje, ne prelazeći u režim spavanja.

Kada koristiti:

  • Kada je vreme čekanja na zaključavanje veoma kratko, a prelazak u sleep/wakeup bi bio skuplji.
  • U sistemima sa niskom latencijom i visokom konkurencijom.

Nedostaci:

  • Pri dugom čekanju, CPU resursi se bespotrebno troše.

Primer u pseudokodu:

while !atomic_compare_and_swap(&lock, 0, 1) {
    // aktivno čekanje
}
// kritična sekcija
lock = 0