Sobes.tech
Junior

Quelles autres méthodes de synchronisation des goroutines existent en Go en plus des canaux?

sobes.tech IA

Réponse de l'IA

En plus des canaux, en Go, pour synchroniser les goroutines, vous pouvez utiliser :

  • sync.WaitGroup — permet d'attendre la fin d'un groupe de goroutines.
  • sync.Mutex — mutex pour protéger les ressources partagées contre l'accès simultané.
  • sync.RWMutex — mutex avec séparation entre lecture et écriture.
  • sync.Cond — variable conditionnelle pour notifier les goroutines de la survenue d'un événement.
  • opérations atomiques du paquet sync/atomic — pour des opérations atomiques sur des variables sans verrouillage.

Exemple d'utilisation de WaitGroup :

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // travail de la goroutine
}()
wg.Wait() // attendre la fin de toutes les goroutines