Sobes.tech
Senior

Hogyan lehet két worker() végrehajtását párhuzamosítani szekvenciális helyett (6 másodperc → 3 másodperc)?

sobes.tech MI

Válasz az MI-től

Go nyelven a függvények párhuzamos végrehajtásához goroutine-okat lehet használni. Ha két worker() függvényed van, amelyek jelenleg szekvenciálisan futnak és összesen 6 másodpercet vesznek igénybe, akkor külön goroutine-okban indítva párhuzamosan futnak, és az összidő kb. 3 másodpercre csökken.

Példa:

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

// A két goroutine befejezésének várásához használd a sync.WaitGroup-ot
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Így a függvények goroutine-okban való indítása és a WaitGroup-kal való szinkronizálás lehetővé teszi azok párhuzamos végrehajtását.