Senior
Máš predstavu o rozdiele medzi tokom a procesom?
sobes.tech AI
Odpoveď od AI
Proces je nezávislá jednotka vykonávania s vlastným adresným priestorom, zdrojmi a stavom. Vlákno (goroutine v Go) je ľahšia jednotka v rámci procesu, ktorá zdieľa pamäť a zdroje procesu, ale má vlastný zásobník a kontext vykonávania.
V Go je goroutine ľahké vlákno spravované runtime systémom Go, ktoré umožňuje spúšťanie tisícov paralelných úloh s minimálnymi nákladmi v porovnaní so systémovými vláknami.
Hlavné rozdiely:
- Proces má samostatný adresný priestor, vlákna v procese zdieľajú pamäť.
- Vytvorenie procesu je náročnejšie na zdroje než vytvorenie vlákna.
- V Go sú goroutine vlákna spravované na úrovni jazyka, nie OS.
Príklad vytvorenia goroutine v Go:
func sayHello() {
fmt.Println("Ahoj z goroutine")
}
func main() {
go sayHello() // spustí funkciu v goroutine
time.Sleep(time.Second) // čaká, aby goroutine mohla dokončiť
}