Sobes.tech
Junior — Middle

Hoe implementeer je een tijdslimiet voor een operatie met behulp van context.WithTimeout in Go?

sobes.tech AI

Antwoord van AI

In Go wordt vaak een context met timeout gebruikt om de uitvoeringstijd van een operatie te beperken via de functie context.WithTimeout. Deze geeft een nieuwe context en een annuleringsfunctie terug. Als de operatie niet voltooid is voordat de timeout verloopt, wordt de context automatisch geannuleerd.

Voorbeeld van gebruik:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operatie voltooid:", result)
case <-ctx.Done():
    fmt.Println("Timeout overschreden:", ctx.Err())
}

Hier moet someLongRunningOperation ctx accepteren en periodiek ctx.Done() controleren voor een correcte onderbreking. Dit maakt het mogelijk om de operatie veilig te annuleren bij timeout.