Junior — Middle
Comment le mécanisme d'exclusion mutuelle est-il implémenté à l'aide de Mutex dans le langage Go?
sobes.tech IA
Réponse de l'IA
Dans le langage Go, pour implémenter une exclusion mutuelle (mutex), on utilise le type sync.Mutex. Il permet de protéger les sections critiques du code contre un accès simultané depuis plusieurs goroutines, évitant ainsi les conditions de course.
Opérations principales :
Lock()— verrouille le mutex, empêchant d’autres goroutines d’y accéder.Unlock()— déverrouille le mutex, permettant à d’autres goroutines de continuer.
Exemple d’utilisation :
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Verrouille le mutex
counter++
fmt.Println("Compteur:", counter)
mu.Unlock() // Déverrouille le mutex
}
Dans un environnement multithread, le mutex garantit qu’une seule goroutine exécute le code entre Lock() et Unlock() à la fois, évitant ainsi des modifications incorrectes de données partagées.