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