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
}