Junior — Middle
Kako razlikovati gorutinu od običnog toka izvršenja u operativnom sistemu?
sobes.tech АИ
Одговор од АИ
Goroutine je lagani tok izvršavanja koji upravlja runtime Go-a, a ne operativni sistem. Glavne razlike:
- Laganost: Goroutine-ovi zauzimaju mnogo manje memorije (obično nekoliko kilobajta steka), dok sistemski thread-ovi zahtevaju megabajte.
- Planiranje: Goroutine-ovi se planiraju od strane runtime-a Go (planer M:N), a ne od OS-a. Ovo omogućava pokretanje hiljada goroutine-ova na više sistemskih thread-ova.
- Kreiranje: Kreiranje goroutine-a je veoma jeftino — dovoljno je napisati
go funkcija(), dok je kreiranje sistemskog thread-a zahtevnije u resursima.
Primer kreiranja goroutine-a:
func sayHello() {
fmt.Println("Zdravo iz goroutine-a")
}
func main() {
go sayHello() // pokreće goroutine
time.Sleep(time.Second) // čekamo da goroutine završi
}
Dakle, goroutine-ovi su apstrakcija nad sistemskim thread-ovima, optimizovana za konkurentno programiranje u Go.