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