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