Middle+
Cosa sono asincronia, parallelismo e concorrenza nel contesto di Go?
sobes.tech AI
Risposta dell'AI
Nel contesto di Go:
-
Asincronia — esecuzione di operazioni senza bloccare il thread principale, solitamente tramite goroutine e canali. Permette di avviare compiti che possono essere eseguiti indipendentemente e senza attendere il loro completamento.
-
Parallellismo — esecuzione simultanea di più compiti su diversi core della CPU. In Go, ciò si ottiene grazie allo scheduler delle goroutine, che le distribuisce sui thread di sistema.
-
Concorrenza — capacità di un programma di gestire più compiti che possono essere eseguiti contemporaneamente o in sequenza, garantendo un accesso corretto alle risorse condivise.
Esempio di goroutine:
func worker(id int) {
fmt.Printf("Lavoratore %d avviato\n", id)
// lavoro
}
func main() {
for i := 1; i <= 5; i++ {
go worker(i) // avvio asincrono
}
time.Sleep(time.Second) // attende il completamento
}