Junior — Middle
Come fa la goroutine a sapere che le è stato inviato un segnale di terminazione tramite il contesto?
sobes.tech AI
Risposta dell'AI
La goroutine riceve il segnale di completamento tramite un contesto usando un canale, che fornisce l'oggetto context.Context. Di solito si utilizza il metodo Done(), che restituisce un canale che si chiude quando il contesto viene annullato. La goroutine può ascoltare questo canale in un ciclo o select e reagire alla sua chiusura, che indica un segnale di completamento o annullamento dell'operazione.
Esempio:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// Il contesto è stato annullato, terminare
fmt.Println("Goroutine terminata")
return
// altri casi
}
}()
// più tardi, chiamiamo cancel() per segnalare la fine
cancel()