Sobes.tech
Senior

Da li imaš predstavu o razlici između toka i procesa?

sobes.tech АИ

Одговор од АИ

Proces je nezavisna jedinica izvršavanja sa sopstvenim adresnim prostorom, resursima i stanjem. Nit (goroutine u Go-u) je lakša jedinica unutar procesa, koja deli memoriju i resurse procesa, ali ima sopstveni stek i kontekst izvršavanja.

U Go-u, goroutine je lagani tok koji upravlja runtime Go-a, omogućavajući pokretanje hiljada paralelnih zadataka sa minimalnim troškovima u poređenju sa sistemskim nitima.

Glavne razlike:

  • Proces ima poseban adresni prostor, niti unutar procesa dele memoriju.
  • Kreiranje procesa je teže u resursima nego kreiranje niti.
  • U Go-u, goroutine su niti koje se upravljaju na nivou jezika, a ne OS-a.

Primer kreiranja goroutine u Go-u:

func sayHello() {
    fmt.Println("Zdravo iz goroutine")
}

func main() {
    go sayHello() // pokreće funkciju u goroutine
    time.Sleep(time.Second) // čeka da goroutine završi
}