Junior — Middle
É possível aplicar múltiplos mecanismos de bloqueio (Mutex) dentro de uma única função ao mesmo tempo?
sobes.tech IA
Resposta da IA
Sim, no Go é possível usar vários mutexes (Mutex) dentro de uma mesma função ao mesmo tempo. Isso é comum quando é necessário proteger diferentes recursos ou partes de dados que não estão relacionados entre si. O principal é evitar deadlocks, quando um mutex espera a liberação de outro, que por sua vez espera o primeiro.
Exemplo de uso de vários mutexes:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Trabalhar com o primeiro recurso
mu2.Lock()
defer mu2.Unlock()
// Trabalhar com o segundo recurso
}
Para evitar deadlock, recomenda-se sempre bloquear os mutexes na mesma ordem em todos os locais do código.