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