Sobes.tech
Junior — Middle

У чему се разликује извршавање кода у горутини од рада системског тока на нивоу оперативног система?

sobes.tech АИ

Одговор од АИ

Gorutine u Go jezike su lagani niti koje upravlja runtime Go, a ne operativni sistem. Glavne razlike:

  • Lagana težina: Gorutine zauzimaju vrlo malo memorije (obično nekoliko kilobajta steka), dok sistemski niti zahtevaju mnogo više resursa.
  • Planiranje: Planer gorutina je ugrađen u runtime Go i raspoređuje gorutine između sistemskih niti, omogućavajući efikasno korišćenje CPU.
  • Kreiranje i prebacivanje: Kreiranje i prebacivanje između gorutina je brže nego između sistemskih niti, jer ne zahteva promenu konteksta jezgra OS-a.

Primer:

func main() {
    go func() {
        fmt.Println("Gorutina")
    }()
    fmt.Println("Glavni tok")
    time.Sleep(time.Second) // Čekamo završetak gorutine
}

Ovde se gorutina pokreće unutar procesa, ali ne odgovara direktno posebnom sistemskom niti.