Sobes.tech
Junior — Middle

Spiega il concetto di concorrenza nel linguaggio di programmazione Go e il suo ruolo nello sviluppo di applicazioni parallele

sobes.tech AI

Risposta dell'AI

In Go, la concorrenza è la capacità di un programma di eseguire più compiti contemporaneamente, utilizzando efficacemente le risorse della CPU. Nel linguaggio Go, questo è realizzato tramite le goroutine, che sono thread leggeri avviati con la parola chiave go.

La concorrenza permette di scrivere applicazioni parallele, in cui diverse parti del codice vengono eseguite simultaneamente, migliorando le prestazioni e la reattività dei programmi.

Per sincronizzare e scambiare dati tra le goroutine, si utilizzano i canali (channels), che garantiscono una comunicazione sicura senza l'uso di blocchi espliciti.

Esempio:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Lavoratore %d inizia\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Lavoratore %d finisce\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // avvia goroutine
    }
    time.Sleep(2 * time.Second) // attende il completamento delle goroutine
}

In questo esempio, tre goroutine vengono eseguite contemporaneamente, dimostrando la concorrenza in Go.