Sobes.tech
Junior — Middle

W jaki sposób realizowana jest i zarządzana praca wielu goroutine w aplikacji?

sobes.tech AI

Odpowiedź od AI

W Go, goroutines to lekkie wątki zarządzane przez środowisko uruchomieniowe Go, a nie przez system operacyjny. Gdy w aplikacji tworzone jest wiele goroutines, środowisko uruchomieniowe Go planuje ich wykonanie na ograniczonej liczbie wątków systemowych (M), korzystając z modelu M:N (M wątków systemowych na N goroutines).

Planista Go rozdziela goroutines pomiędzy wątki, zmieniając kontekst bardzo szybko i wydajnie. Pozwala to na uruchomienie tysięcy, a nawet milionów goroutines z niskimi kosztami pamięci i czasu.

Przykład tworzenia goroutine:

func sayHello() {
    fmt.Println("Cześć z goroutine")
}

func main() {
    go sayHello() // uruchom goroutine
    time.Sleep(time.Second) // daj czas goroutine na wykonanie
}