Junior — Middle
Quel est l'objectif d'utiliser des contextes enfants dans le système?
sobes.tech IA
Réponse de l'IA
Dans Go, les contextes enfants (child contexts) sont créés à partir des contextes parents à l'aide des fonctions context.WithCancel, context.WithTimeout ou context.WithDeadline. L'objectif d'utiliser des contextes enfants :
- Gestion de la durée de vie des opérations : le contexte enfant peut être annulé indépendamment du parent, ce qui permet de contrôler l'exécution de tâches spécifiques.
- Transmission de signaux d'annulation : si le contexte parent est annulé, tous les contextes enfants le sont aussi, assurant une terminaison en cascade des opérations liées.
- Ajout de restrictions : par exemple, définir un délai d'attente ou une date limite pour le contexte enfant sans modifier le parent.
Exemple :
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — contexte enfant avec un délai d'attente de 5 secondes
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Opération terminée")
case <-ctx.Done():
fmt.Println("Opération annulée ou expirée")
}
}(ctx)
// cancel() peut être appelé pour annuler manuellement le contexte enfant
Ainsi, les contextes enfants permettent de gérer de manière flexible la durée de vie et l'annulation des opérations dans une hiérarchie de tâches.