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.