Sobes.tech
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)