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.