Junior — Middle
Poderia explicar o princípio de funcionamento do mutex e seu uso em programas multithread?
sobes.tech IA
Resposta da IA
Mutual exclusion (Mutex) é um mecanismo de sincronização utilizado para evitar o acesso simultâneo de múltiplos threads a um recurso comum (por exemplo, uma variável ou arquivo). O Mutex garante que, em cada momento, apenas um thread possa possuir o bloqueio e executar a seção crítica do código.
Princípio de funcionamento:
- O thread tenta adquirir o mutex antes de entrar na seção crítica.
- Se o mutex estiver livre, o thread obtém acesso e continua.
- Se o mutex estiver ocupado por outro thread, o thread atual fica bloqueado e espera até que seja liberado.
- Após terminar com o recurso, o thread libera o mutex, permitindo que outros threads continuem.
Em Go, isso é implementado através do tipo sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // adquirir o mutex
counter++ // seção crítica
mu.Unlock() // liberar o mutex
}
O uso do mutex previne condições de corrida e garante a integridade dos dados durante a execução paralela.