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.