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