Sobes.tech
Senior

Como fazer a execução de dois worker() ser paralela em vez de sequencial (6 segundos → 3 segundos)?

sobes.tech IA

Resposta da IA

Em Go, para a execução paralela de funções, pode usar goroutines. Se tiver duas funções worker(), que atualmente são executadas sequencialmente e levam um total de 6 segundos, ao executá-las em goroutines separadas, elas serão executadas em paralelo, e o tempo total será reduzido aproximadamente para 3 segundos.

Exemplo:

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

// Para esperar que ambas as goroutines terminem, use sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Dessa forma, iniciar funções em goroutines e sincronizá-las com WaitGroup permite executá-las em paralelo.