Junior — Middle
Explique os princípios de funcionamento do SpinLock e em que cenários ele é utilizado.
sobes.tech IA
Resposta da IA
SpinLock é uma primitive de sincronização que, ao tentar adquirir um bloqueio já ocupado, bloqueia a thread sem passar para o estado de espera (sleep), mas executa um ciclo ativo ("spin"), verificando a disponibilidade do bloqueio.
Princípio de funcionamento:
- A thread tenta adquirir o bloqueio.
- Se o bloqueio estiver livre, ela o adquire e continua.
- Se o bloqueio estiver ocupado, a thread verifica seu estado em um ciclo, sem passar para modo de espera.
Quando usar:
- Quando o tempo de espera do bloqueio é muito curto, e passar para sleep/wakeup seria mais custoso.
- Em sistemas com baixa latência e alta concorrência.
Desvantagens:
- Quando a espera é longa, consome recursos de CPU inutilmente.
Exemplo em pseudocódigo:
while !atomic_compare_and_swap(&lock, 0, 1) {
// espera ativa
}
// seção crítica
lock = 0