Sobes.tech
Junior — Middle

Avez-vous utilisé le mécanisme de synchronisation avec sync.WaitGroup dans vos projets?

sobes.tech IA

Réponse de l'IA

Oui, dans les projets Go, sync.WaitGroup est souvent utilisé pour synchroniser les goroutines. Ce mécanisme permet d’attendre la fin d’un groupe de tâches parallèles avant de continuer.

Principe de fonctionnement :

  • Un objet WaitGroup est créé.
  • Avant de lancer chaque goroutine, on appelle Add(1) pour augmenter le compteur.
  • À la fin du travail dans la goroutine, on appelle Done(), ce qui diminue le compteur.
  • La goroutine principale appelle Wait(), qui se bloque jusqu’à ce que le compteur atteigne zéro.

Exemple :

var wg sync.WaitGroup

wg.Add(2) // attendons 2 goroutines

go func() {
    defer wg.Done()
    // travail de la première goroutine
}()

go func() {
    defer wg.Done()
    // travail de la deuxième goroutine
}()

wg.Wait() // attend la fin des deux

Ceci est pratique pour coordonner des opérations parallèles et empêcher le programme de se terminer prématurément.