Sobes.tech
Junior — Middle

Wat is het verschil tussen het gebruik van de functies WithTimeout en WithDeadline in de context van controle van de uitvoeringstijd?

sobes.tech AI

Antwoord van AI

De functies WithTimeout en WithDeadline in Go worden gebruikt om een context met tijdslimiet te creëren, maar verschillen in de manier waarop deze limiet wordt ingesteld:

  • WithTimeout(parent, timeout) creëert een context die automatisch wordt geannuleerd na een periode van timeout vanaf het huidige moment. Dit betekent dat de timer start op het moment van aanroep.

  • WithDeadline(parent, deadline) creëert een context die wordt geannuleerd op een specifiek moment deadline (type time.Time). Dit maakt het mogelijk om een exact tijdstip te bepalen waarop de context verloopt.

Voorbeeld:

ctx1, cancel1 := context.WithTimeout(context.Background(), 5*time.Second)
// ctx1 wordt over 5 seconden vanaf nu geannuleerd

deadline := time.Now().Add(5 * time.Second)
ctx2, cancel2 := context.WithDeadline(context.Background(), deadline)
// ctx2 wordt precies op het moment van deadline geannuleerd

Dus, WithTimeout is handig wanneer je een duur wilt instellen, en WithDeadline wanneer een specifiek tijdstip belangrijk is.