Senior
Czy masz wyobrażenie o różnicy między przepływem a procesem?
sobes.tech AI
Odpowiedź od AI
Proces to niezależna jednostka wykonawcza z własną przestrzenią adresową, zasobami i stanem. Wątek (goroutine w Go) to lżejsza jednostka wewnątrz procesu, która dzieli pamięć i zasoby procesu, ale ma własny stos i kontekst wykonania.
W Go goroutine to lekki wątek zarządzany przez środowisko uruchomieniowe Go, umożliwiający uruchomienie tysięcy równoległych zadań przy minimalnych kosztach w porównaniu do wątków systemowych.
Główne różnice:
- Proces ma oddzielną przestrzeń adresową, wątki w ramach procesu dzielą pamięć.
- Tworzenie procesu jest bardziej zasobożerne niż tworzenie wątku.
- W Go goroutine to wątki zarządzane na poziomie języka, nie systemu operacyjnego.
Przykład tworzenia goroutine w Go:
func sayHello() {
fmt.Println("Cześć z goroutine")
}
func main() {
go sayHello() // uruchamia funkcję w goroutine
time.Sleep(time.Second) // czekamy, aby goroutine zdążyła się wykonać
}