Junior — Middle
Spiega i principi di funzionamento di SpinLock e in quali scenari viene applicato.
sobes.tech AI
Risposta dell'AI
SpinLock è una primitive di sincronizzazione che, nel tentativo di acquisire un lock già occupato, blocca il thread senza passare allo stato di attesa (sleep), ma esegue un ciclo attivo ("spin"), verificando la disponibilità del lock.
Principio di funzionamento:
- Il thread tenta di acquisire il lock.
- Se il lock è libero, lo acquisisce e continua.
- Se il lock è occupato, il thread verifica il suo stato in un ciclo, senza passare in modalità sleep.
Quando usarlo:
- Quando il tempo di attesa del lock è molto breve, e passare a sleep/wakeup sarebbe più costoso.
- In sistemi con bassa latenza e alta concorrenza.
Svantaggi:
- In caso di lunga attesa, consuma risorse CPU inutilmente.
Esempio in pseudocodice:
while !atomic_compare_and_swap(&lock, 0, 1) {
// attesa attiva
}
// sezione critica
lock = 0