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
WaitGroupest 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.