Junior — Middle
Kokius paralelinių užduočių įgyvendinimo tipus žinote?
sobes.tech AI
Atsakymas iš AI
Go kalboje paralelias užduotis galima įgyvendinti keliais būdais:
-
Goroutines — lengvi srautai, kurie pradedami naudojant raktinį žodį
go. Jie leidžia vykdyti funkcijas paraleliai. -
** Kanalai** — naudojami komunikacijai ir sinchronizacijai tarp goroutine'ų, leidžia saugiai perduoti duomenis.
-
Darbininkų baseinai — goroutine'ų grupė, kurie paima užduotis iš eilės ir jas apdoroja, padedant kontroliuoti vienu metu veikiančių goroutine'ų skaičių.
-
sync.WaitGroup — laukia, kol baigsis goroutine'ų grupė.
Pavyzdys, kaip paleisti goroutine ir perduoti duomenis per kanalą:
ch := make(chan int)
// Paleisti goroutine
go func() {
ch <- 42 // siųsti reikšmę į kanalą
}()
// Gauti reikšmę iš kanalo
val := <-ch
fmt.Println(val)