Sobes.tech
Junior — Middle

Jak zarządzanie i rozdzielanie zadań między goroutines odbywa się w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go zarządzanie i rozdzielanie zadań między gorutynami odbywa się za pomocą planisty (scheduler) wbudowanego w środowisko uruchomieniowe Go. Gorutiny to lekkie wątki, które uruchamia się za pomocą słowa kluczowego go.

Planista Go rozdziela gorutiny na wątki systemowe (OS threads) i zarządza ich wykonaniem, zapewniając współbieżność i równoległość. Używa modelu M:N, gdzie M to liczba wątków systemowych, a N to liczba gorutyn.

Przykład tworzenia gorutyny:

func sayHello() {
    fmt.Println("Witaj z gorutyny")
}

func main() {
    go sayHello() // uruchamia gorutynę
    time.Sleep(time.Second) // czekamy, aby gorutyna zdążyła się wykonać
}

W ten sposób programista po prostu uruchamia gorutynę, a środowisko uruchomieniowe Go rozdziela zadania i przełącza się między nimi.