Sobes.tech
Senior

Comment rendre l'exécution de deux worker() parallèle au lieu de séquentielle (6 secondes → 3 secondes) ?

sobes.tech IA

Réponse de l'IA

En Go, pour l'exécution parallèle de fonctions, vous pouvez utiliser des goroutines. Si vous avez deux fonctions worker(), qui s'exécutent actuellement de manière séquentielle et prennent au total 6 secondes, en les lançant dans des goroutines séparées, elles s'exécuteront en parallèle, et le temps total sera réduit à environ 3 secondes.

Exemple:

func() {
    worker()
}()
func() {
    worker()
}()

// Pour attendre la fin des deux goroutines, utilisez sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Ainsi, lancer des fonctions dans des goroutines et les synchroniser avec WaitGroup permet de les exécuter en parallèle.