Sobes.tech
Junior — Middle

Il numero di goroutine create è correlato al numero di core nel processore?

sobes.tech AI

Risposta dell'AI

Il numero di goroutine create in Go non è direttamente correlato al numero di core del processore. È possibile crearne molte — sono thread leggeri gestiti dal runtime di Go, e il loro numero è principalmente limitato dalla memoria disponibile e dalla logica del programma.

Il numero di core influisce sul numero di thread del sistema operativo che possono essere eseguiti contemporaneamente, e sul parametro GOMAXPROCS, che imposta il numero massimo di thread che eseguono goroutine in parallelo. Tuttavia, il numero di goroutine di solito supera di gran lunga il numero di core, poiché vengono pianificate e switchate in modo efficiente all'interno del runtime.

Esempio:

runtime.GOMAXPROCS(4) // Usare 4 core

for i := 0; i < 1000; i++ {
    go func(n int) {
        fmt.Println("Goroutine", n)
    }(i)
}
time.Sleep(time.Second)

Qui vengono create 1000 goroutine, anche se ci sono solo 4 core.