Sobes.tech
Junior — Middle

Explique o que é um bloqueio (Lock) no contexto de um mutex e para que é utilizado.

sobes.tech IA

Resposta da IA

O bloqueio (Lock) é um mecanismo de sincronização utilizado para evitar o acesso simultâneo de múltiplos threads ou goroutines a um recurso comum, a fim de evitar condições de corrida e garantir a correção dos dados.

No contexto de um mutex, o bloqueio significa que quando um thread captura (lock) um mutex, outros threads que tentarem capturá-lo esperarão até que o primeiro o libere (unlock).

Exemplo em Go:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // capturar o bloqueio
    counter++         // seção crítica
    mu.Unlock()       // liberar o bloqueio
}

Assim, o bloqueio garante que apenas um thread execute a seção crítica do código em um dado momento.