Junior — Middle
Quali tecniche di elaborazione parallela sono implementate nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
In Go, vengono implementate le seguenti tecniche di elaborazione di compiti paralleli:
-
Goroutine — thread leggeri avviati con la parola chiave
go. Permettono di eseguire funzioni in parallelo. -
Canali — meccanismo di comunicazione tra goroutine, che consente di trasmettere dati e sincronizzare l'esecuzione.
-
Selettori (select) — costruzione per attendere più operazioni sui canali, permettendo di elaborare dati da più fonti.
-
Pacchetto sync — contiene primitive di sincronizzazione come
Mutex,WaitGroup,Once, che aiutano a gestire l'accesso alle risorse condivise e a coordinare la terminazione delle goroutine.
Esempio di avvio di una goroutine e trasmissione di dati tramite un canale:
package main
import (
"fmt"
)
func worker(ch chan string) {
ch <- "pronto"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println(msg) // output: pronto
}