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