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