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
}