Sobes.tech
Senior

Máš představu o rozdílu mezi tokem a procesem?

sobes.tech AI

Odpověď od AI

Proces je nezávislá jednotka provádění s vlastním adresním prostorem, zdroji a stavem. Vlákno (goroutine v Go) je lehčí jednotka uvnitř procesu, která sdílí paměť a zdroje procesu, ale má vlastní zásobník a kontext provádění.

V Go je goroutine lehké vlákno řízené runtime systémem Go, které umožňuje spouštět tisíce paralelních úloh s minimálními náklady ve srovnání se systémovými vlákny.

Hlavní rozdíly:

  • Proces má samostatný adresní prostor, vlákna uvnitř procesu sdílejí paměť.
  • Vytvoření procesu je náročnější na zdroje než vytvoření vlákna.
  • V Go jsou gorutiny vlákna řízená na úrovni jazyka, nikoli OS.

Příklad vytvoření gorutiny v Go:

func sayHello() {
    fmt.Println("Ahoj z gorutiny")
}

func main() {
    go sayHello() // spustí funkci v gorutině
    time.Sleep(time.Second) // počká, aby gorutina měla čas se dokončit
}