Junior — Middle
Qual è il ruolo del metodo Context.Done nella gestione della conclusione delle operazioni asincrone?
sobes.tech AI
Risposta dell'AI
Il metodo Context.Done() restituisce un canale che si chiude quando il contesto viene cancellato o il suo timeout scade. Questo permette alle operazioni asincrone di rilevare il segnale di completamento e di interrompersi correttamente.
Ad esempio, in una goroutine, si può ascoltare questo canale e terminare il lavoro quando il contesto viene cancellato:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// Il contesto è stato cancellato, terminare
return
case data := <-dataCh:
// Elaborare i dati
}
}()
// Più tardi, si chiama cancel() per fermare la goroutine
cancel()
In questo modo, Context.Done() funge da segnale per la terminazione sicura e tempestiva delle operazioni asincrone.