Junior — Middle
Quels types de mécanismes de verrouillage mutuel d'exclusion utilisez-vous dans vos projets?
sobes.tech IA
Réponse de l'IA
En Go, pour implémenter l’exclusion mutuelle, j’utilise le plus souvent le type standard sync.Mutex. Il est simple à utiliser et bloque efficacement les sections critiques du code.
J’utilise également sync.RWMutex lorsque je dois différencier l’accès en lecture et en écriture : plusieurs goroutines peuvent lire simultanément, mais l’écriture bloque tout le monde.
Dans certains cas, j’utilise des canaux (channels) pour la synchronisation, ce qui permet d’éviter les blocages explicites et de rendre le code plus déclaratif.
Exemple avec sync.Mutex :
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Ainsi, le choix du mécanisme dépend de la tâche spécifique et des exigences de performance.