Sobes.tech
Senior

Cum să faci ca executarea a două worker() să fie paralelă în loc de secvențială (6 secunde → 3 secunde)?

sobes.tech AI

Răspuns de la AI

În Go, pentru executarea paralelă a funcțiilor, puteți folosi goroutine-uri. Dacă aveți două funcții worker(), care în prezent se execută secvențial și durează în total 6 secunde, pornindu-le în goroutine-uri separate, acestea vor fi executate în paralel, iar timpul total se va reduce aproximativ la 3 secunde.

Exemplu:

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

// Pentru a aștepta finalizarea ambelor goroutine-uri, folosiți sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Astfel, lansarea funcțiilor în goroutine-uri și sincronizarea lor cu WaitGroup permite executarea lor în paralel.