Sobes.tech
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
}