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)