Sobes.tech
Junior — Middle

Come avviene la distribuzione delle quattro goroutine sui quattro core del processore al loro avvio?

sobes.tech AI

Risposta dell'AI

In Go, lo scheduler delle goroutine distribuisce le goroutine tra i thread di sistema (M), che a loro volta sono associati ai core della CPU.

Se hai 4 goroutine e 4 core della CPU, all'avvio dello scheduler, può distribuire ogni goroutine su un core diverso, garantendo l'esecuzione in parallelo. Ciò è possibile se la variabile di ambiente GOMAXPROCS è impostata a 4 (di default, nelle versioni moderne di Go, è uguale al numero di core disponibili).

Esempio:

runtime.GOMAXPROCS(4) // imposta il numero di thread disponibili a 4

for i := 0; i < 4; i++ {
    go func(id int) {
        fmt.Printf("Goroutine %d avviata\n", id)
        // lavoro
    }(i)
}

Lo scheduler di Go distribuirà le goroutine tra i thread, che possono essere eseguiti su diversi core, permettendo un uso efficiente dei sistemi multiprocessore. Tuttavia, la distribuzione esatta dipende dal carico del sistema e dallo scheduler interno.