Junior — Middle
Quels types d'exclusions mutuelles (Mutex) sont implémentés dans la bibliothèque standard de Go?
sobes.tech IA
Réponse de l'IA
La bibliothèque standard de Go implémente un type principal de exclusion mutuelle : sync.Mutex. C'est un mutex simple qui assure le verrouillage et le déverrouillage pour protéger les sections critiques du code contre un accès simultané.
De plus, il existe sync.RWMutex, une version étendue du mutex qui permet à plusieurs lecteurs de maintenir le verrouillage simultanément, mais l'écriture est bloquée de manière exclusive.
Exemple d'utilisation de sync.Mutex :
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Et un exemple avec sync.RWMutex :
var rwMu sync.RWMutex
var data int
func readData() int {
rwMu.RLock()
defer rwMu.RUnlock()
return data
}
func writeData(val int) {
rwMu.Lock()
defer rwMu.Unlock()
data = val
}