Junior — Middle
Numărul de goroutines create este legat de numărul de nuclee din procesor?
sobes.tech AI
Răspuns de la AI
Numărul de goroutines create în Go nu este direct legat de numărul de nuclee ale procesorului. Poți crea foarte multe goroutines — sunt fire ușoare gestionate de runtime-ul Go, iar numărul lor este în principal limitat de memoria disponibilă și logica programului.
Numărul de nuclee influențează numărul de fire ale sistemului de operare care pot fi executate simultan, precum și parametrul GOMAXPROCS, care stabilește numărul maxim de fire care execută goroutines în paralel. Dar numărul de goroutines depășește de obicei semnificativ numărul de nuclee, deoarece acestea sunt planificate și comutate eficient în interiorul runtime-ului.
Exemplu:
runtime.GOMAXPROCS(4) // Folosim 4 nuclee
for i := 0; i < 1000; i++ {
go func(n int) {
fmt.Println("Goroutine", n)
}(i)
}
time.Sleep(time.Second)
Aici se creează 1000 de goroutines, deși există doar 4 nuclee.