Junior — Middle
Pourquoi la fonction Context.WithTimeout retourne-t-elle deux valeurs et comment sont-elles utilisées dans le contexte de la gestion des délais d'expiration ?
sobes.tech IA
Réponse de l'IA
La fonction context.WithTimeout en Go renvoie deux valeurs:
- Le nouveau contexte (
Context), qui est automatiquement annulé après le délai spécifié. - La fonction d'annulation (
CancelFunc), qui peut être appelée pour terminer prématurément le travail avec le contexte.
Utilisation:
- Le nouveau contexte est utilisé pour contrôler le temps d'exécution des opérations : si le délai est dépassé, le contexte est annulé et les opérations associées reçoivent un signal d'annulation.
- La fonction d'annulation est appelée pour libérer les ressources associées au contexte si l'opération se termine avant le délai.
Exemple:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // garantit la libération des ressources
select {
case <-doWork(timedCtx):
fmt.Println("Travail terminé")
case <-timedCtx.Done():
fmt.Println("Délai écoulé ou annulation")
}
Ainsi, les valeurs retournées permettent de définir une limite de temps et de contrôler l'annulation des opérations.