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.