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.