Sobes.tech
Junior — Middle

Quelle est la différence entre l'utilisation de la fonction WithTimeout et WithDeadline dans le contexte du contrôle du temps d'exécution?

sobes.tech IA

Réponse de l'IA

Les fonctions WithTimeout et WithDeadline en Go sont utilisées pour créer un contexte avec une limite de temps, mais diffèrent dans la façon de définir cette limite:

  • WithTimeout(parent, timeout) crée un contexte qui est automatiquement annulé après une période de temps timeout à partir du moment actuel. C'est-à-dire que le minuteur démarre au moment de l'appel.

  • WithDeadline(parent, deadline) crée un contexte qui est annulé à un moment précis deadline (de type time.Time). Cela permet de définir une heure exacte à laquelle le contexte expirera.

Exemple:

ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1 sera annulé dans 5 secondes à partir de maintenant

deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2 sera annulé exactement au moment de deadline

Ainsi, WithTimeout est pratique lorsque vous souhaitez définir une durée, et WithDeadline lorsque l'heure précise est importante.