Senior
Kaip padaryti, kad dviejų worker() vykdymas būtų lygiagrečiai, o ne eilės tvarka (6 sekundės → 3 sekundės)?
sobes.tech AI
Atsakymas iš AI
Go kalboje funkcijų vykdymą paraleliai galima atlikti naudojant goroutines. Jei turite dvi funkcijas worker(), kurios šiuo metu vykdomos sekantės ir iš viso užtrunka 6 sekundes, jas paleidus atskiruose goroutine, jos vykdomos paraleliai, ir bendras laikas sumažės maždaug iki 3 sekundžių.
Pavyzdys:
func() {
worker()
}()
func() {
worker()
}()
// Norint palaukti, kol abi goroutine baigs, naudokite sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
defer wg.Done()
worker()
}()
func() {
defer wg.Done()
worker()
}()
wg.Wait()
Taip paleidus funkcijas goroutine-ose ir sinchronizuojant per WaitGroup, jos vykdomos paraleliai.