Junior — Middle
Objasnite zašto nije moguće direktno uskladiti broj niti sa brojem gorutina u Go.
sobes.tech АИ
Одговор од АИ
U Go, broj gorutina ne odgovara broju niti operativnog sistema, jer su gorutine lagane niti koje upravlja runtime Go-a, a ne OS.
Glavni razlozi:
- Multiplexing: Runtime Go-a raspoređuje mnoge gorutine na ograničen broj sistemskih niti i efikasno prebacuje između njih.
- Lagana težina: Kreiranje goroutine zahteva mnogo manje resursa nego kreiranje sistemske niti.
- Planer Go: Upravljaju izvršavanjem gorutina, omogućavajući hiljadama njih da rade na više niti.
Zbog toga, broj gorutina ne može direktno da se poveže sa brojem niti — obično, na jednu nit ide mnogo gorutina, što omogućava efikasno korišćenje resursa i pojednostavljuje konkurentno programiranje.
Primer:
runtime.GOMAXPROCS(4) // Podesi broj sistemskih niti
for i := 0; i < 1000; i++ {
go func(id int) {
fmt.Println("Goroutine", id)
}(i)
}
Ovde će 1000 gorutina raditi na 4 sistemske niti.