Sobes.tech
Junior — Middle

Quali tipi di implementazione di compiti paralleli conosci?

sobes.tech AI

Risposta dell'AI

In Go, i compiti paralleli possono essere implementati in diversi modi:

  • Goroutines — thread leggeri avviati con la parola chiave go. Permettono di eseguire funzioni in parallelo.

  • Canali — usati per comunicare e sincronizzare tra goroutine, permettendo di trasferire dati in modo sicuro.

  • Pool di worker — un gruppo di goroutine che prende compiti da una coda e li elabora, aiutando a controllare il numero di goroutine che lavorano contemporaneamente.

  • sync.WaitGroup — per attendere che un gruppo di goroutine finisca.

Esempio di avvio di una goroutine e trasmissione di dati tramite canale:

ch := make(chan int)
// Avvia una goroutine
go func() {
    ch <- 42 // invia valore al canale
}()
// Ricevi valore dal canale
val := <-ch
fmt.Println(val)