Sobes.tech
Junior — Middle

Paaiškinkite konkurencijos sąvoką Go programavimo kalboje ir jos vaidmenį kuriant paralelines programas

sobes.tech AI

Atsakymas iš AI

Go kalboje konkurencija (concurrency) yra programos gebėjimas vykdyti kelias užduotis vienu metu, efektyviai naudojant procesoriaus išteklius. Go kalboje tai įgyvendinama naudojant gorutinas, kurios yra lengvos sruogos, pradedamos naudojant raktinį žodį go.

Konkurencija leidžia rašyti paralelines programas, kuriose skirtingos kodo dalys vykdomos vienu metu, tai didina našumą ir programų reagavimo greitį.

Gorutinos tarpusavyje sinchronizuojasi ir keičiasi duomenimis naudojant kanalus (channels), kurie užtikrina saugią komunikaciją be aiškių blokavimų.

Pavyzdys:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Darbininkas %d pradeda\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Darbininkas %d baigia\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // paleisti gorutiną
    }
    time.Sleep(2 * time.Second) // laukti gorutinų pabaigos
}

Šiame pavyzdyje trys gorutinos vykdomos vienu metu, demonstruojant konkurenciją Go kalboje.