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

  1. Le nouveau contexte (Context), qui est automatiquement annulé après le délai spécifié.
  2. 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.