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.