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 vantimeoutvanaf 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 momentdeadline(typetime.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.