Senior
Šta je gorutina? Kako je organizovana?
sobes.tech АИ
Одговор од АИ
Gorutina je lagani tok izvršenja u jeziku Go. Za razliku od sistemskih niti, gorutine se upravljaju od strane runtime-a Go i imaju vrlo mali stek (počinju sa nekoliko kilobajta i mogu se dinamički povećavati). Ovo omogućava pokretanje stotina hiljada gorutina istovremeno sa niskim troškovima overhead-a.
Struktura gorutine:
- Prilikom kreiranja gorutine (operatorom
go), planer Go je stavlja u red čekanja spremnih zadataka. - Runtime Go koristi M:N planiranje: M sistemskih niti (OS niti) upravlja N gorutina.
- Gorutine prebacuju kontekst na nivou runtime-a, što je brže nego prebacivanje između sistemskih niti.
- Svaka nit (M) može izvršavati više gorutina (N), prebacujući se između njih pri blokadama ili po potrebi.
Primer kreiranja gorutine:
func sayHello() {
fmt.Println("Zdravo iz gorutine")
}
func main() {
go sayHello() // pokrećemo gorutinu
time.Sleep(time.Second) // čekamo da gorutina završi
}