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