Sobes.tech
Senior

Come rendere l'esecuzione di due worker() parallela invece che sequenziale (6 secondi → 3 secondi)?

sobes.tech AI

Risposta dell'AI

In Go, per eseguire funzioni in parallelo, puoi usare le goroutine. Se hai due funzioni worker(), che attualmente vengono eseguite in modo sequenziale e richiedono complessivamente 6 secondi, avviandole in goroutine separate, verranno eseguite in parallelo e il tempo totale si ridurrà a circa 3 secondi.

Esempio:

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

// Per attendere che entrambe le goroutine terminino, usa sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

In questo modo, avviare funzioni in goroutine e sincronizzarle con WaitGroup permette di eseguirle in parallelo.