Sobes.tech
Junior — Middle

Comment une goroutine reconnaît-elle que son exécution a été annulée via le contexte?

sobes.tech IA

Réponse de l'IA

Une goroutine en Go reconnaît l'annulation via le contexte (context.Context) en utilisant le canal Done(), qui se ferme lors de l'annulation.

Lorsqu'un contexte avec annulation est créé (par exemple, via context.WithCancel ou context.WithTimeout), la goroutine peut écouter le canal ctx.Done():

ctx, cancel := context.WithCancel(context.Background())

// Démarrer la goroutine
go func() {
    select {
    case <-ctx.Done():
        // Le contexte a été annulé, il faut terminer
        fmt.Println("Goroutine annulée")
        return
    default:
        // Exécuter le travail principal
    }
}()

// Annuler le contexte
cancel()

Ainsi, la goroutine apprend l'annulation en vérifiant le canal Done() et peut terminer correctement son travail.