Junior — Middle
Czy liczba tworzonych gorutyn jest powiązana z liczbą rdzeni w procesorze?
sobes.tech AI
Odpowiedź od AI
Liczba tworzonych gorutyn w Go nie jest bezpośrednio powiązana z liczbą rdzeni procesora. Możesz tworzyć ich bardzo dużo — są to lekkie wątki zarządzane przez środowisko uruchomieniowe Go, a ich liczba jest głównie ograniczona przez dostępną pamięć i logikę programu.
Liczba rdzeni wpływa na liczbę wątków systemu operacyjnego, które mogą działać jednocześnie, oraz na parametr GOMAXPROCS, który ustawia maksymalną liczbę wątków wykonujących goroutine równolegle. Jednak liczba goroutine zwykle znacznie przewyższa liczbę rdzeni, ponieważ są one efektywnie planowane i przełączane w ramach środowiska uruchomieniowego.
Przykład:
runtime.GOMAXPROCS(4) // Używamy 4 rdzeni
for i := 0; i < 1000; i++ {
go func(n int) {
fmt.Println("Goroutine", n)
}(i)
}
time.Sleep(time.Second)
Tutaj tworzone jest 1000 goroutine, podczas gdy dostępne są tylko 4 rdzenie.