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