Junior — Middle
Qual é a diferença entre o uso da função WithTimeout e WithDeadline no contexto do controlo do tempo de execução?
sobes.tech IA
Resposta da IA
As funções WithTimeout e WithDeadline em Go são usadas para criar um contexto com limite de tempo, mas diferem na forma de definir esse limite:
-
WithTimeout(parent, timeout)cria um contexto que é automaticamente cancelado após um período de tempotimeouta partir do momento atual. Ou seja, o temporizador inicia no momento da chamada. -
WithDeadline(parent, deadline)cria um contexto que é cancelado em um momento específicodeadline(tipotime.Time). Isso permite definir uma hora exata em que o contexto expirará.
Exemplo:
ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1 será cancelado em 5 segundos a partir de agora
deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2 será cancelado exatamente no momento do deadline
Portanto, WithTimeout é útil quando se deseja definir uma duração, e WithDeadline quando importa um momento específico no tempo.