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