Sobes.tech
Senior

Kā padarīt, lai divu worker() izpilde būtu paralēla, nevis secīga (6 sekundes → 3 sekundes)?

sobes.tech AI

Atbilde no AI

Go valodā funkciju paralēla izpilde ir iespējama, izmantojot goroutines. Ja jums ir divas funkcijas worker(), kas pašlaik tiek izpildītas secīgi un kopējais laiks ir 6 sekundes, tās palaist atsevišķās goroutines, tās tiks izpildītas paralēli, un kopējais laiks samazināsies aptuveni līdz 3 sekundēm.

Piemērs:

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

// Lai gaidītu abu goroutine pabeigšanu, izmantojiet sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Tādējādi, funkciju palaistīšana goroutine-ēs un to sinhronizācija ar WaitGroup ļauj tās izpildīt paralēli.