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