Sobes.tech
Junior — Middle

Peut-on appliquer plusieurs mécanismes de verrouillage (Mutex) dans une même fonction en même temps?

sobes.tech IA

Réponse de l'IA

Oui, en Go, il est possible d'utiliser plusieurs mutex (Mutex) dans une même fonction simultanément. Cela est fréquent lorsque vous devez protéger différentes ressources ou parties de données qui ne sont pas liées entre elles. L'essentiel est d'éviter les blocages mutuels (deadlock), lorsque un mutex attend la libération d'un autre, qui à son tour attend le premier.

Exemple d'utilisation de plusieurs mutex:

var mu1 sync.Mutex
var mu2 sync.Mutex

func updateResources() {
    mu1.Lock()
    defer mu1.Unlock()
    // Travail avec la première ressource

    mu2.Lock()
    defer mu2.Unlock()
    // Travail avec la deuxième ressource
}

Pour éviter le deadlock, il est recommandé de toujours verrouiller les mutex dans le même ordre dans tous les endroits du code.