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
}