Kako je izvršavanje goroutine povezano sa nitima procesora i kako se dodeljuje na određenu nit?
sobes.tech АИ
Одговор од АИ
U Go, goroutine-ji su lagani niti koje upravlja Go runtime, a ne direktno operativni sistem. Oni se izvršavaju unutar niti operativnog sistema, ali Go koristi sopstvenog planera koji raspoređuje mnoge goroutine-ove na ograničen broj niti (M — niti OS-a).
Dodeljivanje goroutine-a niti vrši se putem M:N modela, gde je M broj niti OS-a, a N broj goroutine-ova. Go planer dinamički prebacuje izvršavanje goroutine-ova između niti kako bi efikasno koristio resurse procesora.
Na taj način, goroutine nije vezana za određenu procesorsku nit, već odluku o tome na kojoj niti i kada će biti izvršena donosi Go planer. Ovo omogućava pokretanje hiljada goroutine-ova sa minimalnim troškovima u poređenju sa niti OS-a.
Primer:
func main() {
go func() {
fmt.Println("Goroutine radi")
}()
time.Sleep(time.Second)
}
Ovde se goroutine pokreće, a Go planer će joj dodeliti izvršenje na jednoj od dostupnih niti OS-a.