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.