Junior — Middle
Quel rôle jouent les primitives de synchronisation dans le langage de programmation Go?
sobes.tech IA
Réponse de l'IA
Les primitives de synchronisation en Go sont utilisées pour gérer l'accès aux ressources partagées et coordonner l'exécution des goroutines, afin d'éviter les conditions de course et d'assurer la correction du programme.
Principales primitives :
- Mutex (sync.Mutex) — assure une exclusion mutuelle, permettant à une seule goroutine d'exécuter la section critique à la fois.
- WaitGroup (sync.WaitGroup) — permet d'attendre la fin d'un groupe de goroutines.
- Canal — canal pour la transmission de données entre goroutines, qui est en soi une puissante primitive de synchronisation.
- RWMutex (sync.RWMutex) — permet à plusieurs goroutines de lire les données simultanément, mais l'écriture bloque tout le monde.
Exemple d'utilisation de Mutex :
var mu sync.Mutex
var compteur int
func incrementer() {
mu.Lock()
defer mu.Unlock()
compteur++
}
Ainsi, les primitives de synchronisation aident à éviter les conflits lors de l'accès parallèle aux données et garantissent une interaction correcte entre les goroutines.