Junior — Middle
¿En qué se diferencia el uso de la función WithTimeout de WithDeadline en el contexto del control del tiempo de ejecución?
sobes.tech AI
Respuesta de la IA
Las funciones WithTimeout y WithDeadline en Go se utilizan para crear un contexto con límite de tiempo, pero difieren en la forma de establecer ese límite:
-
WithTimeout(parent, timeout)crea un contexto que se cancela automáticamente después de un período de tiempotimeoutdesde el momento actual. Es decir, el temporizador comienza en el momento de la llamada. -
WithDeadline(parent, deadline)crea un contexto que se cancela en un momento específicodeadline(tipotime.Time). Esto permite establecer una hora exacta en la que el contexto expirará.
Ejemplo:
ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1 se cancelará en 5 segundos desde ahora
deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2 se cancelará exactamente en el momento de deadline
Por lo tanto, WithTimeout es útil cuando se desea establecer una duración, y WithDeadline cuando importa un momento específico en el tiempo.