Junior — Middle
Come viene coordinato il lavoro di più goroutine in Go?
sobes.tech AI
Risposta dell'AI
In Go, la coordinazione del lavoro di più goroutine viene generalmente effettuata tramite canali (channels) e il pacchetto sync.
- Canali permettono alle goroutine di scambiare dati e sincronizzare l'esecuzione, bloccando il mittente o il ricevitore fino a quando sono pronti.
- sync.WaitGroup viene usato per attendere che un gruppo di goroutine finisca.
- Mutex e altre primitive di sync garantiscono un accesso sicuro alle risorse condivise.
Esempio di utilizzo di un canale per la sincronizzazione:
ch := make(chan int)
func() {
// Eseguire lavoro
ch <- 1 // segnale di completamento
}()
<-ch // attendere il segnale
In questo modo, canali e primitive di sincronizzazione consentono di coordinare efficacemente le attività parallele.