Junior — Middle
Wie implementiert man eine Laufzeitbeschränkung für eine Operation mit context.WithTimeout in Go?
sobes.tech KI
Antwort von AI
In Go wird häufig ein Kontext mit Timeout verwendet, um die Laufzeit einer Operation zu begrenzen, mittels der Funktion context.WithTimeout. Diese gibt einen neuen Kontext und eine Abbruchfunktion zurück. Wenn die Operation nicht vor Ablauf des Timeouts beendet wird, wird der Kontext automatisch abgebrochen.
Beispiel für die Verwendung:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-someLongRunningOperation(ctx):
fmt.Println("Operation beendet:", result)
case <-ctx.Done():
fmt.Println("Timeout überschritten:", ctx.Err())
}
Hier sollte someLongRunningOperation ctx akzeptieren und regelmäßig ctx.Done() prüfen, um eine korrekte Unterbrechung zu gewährleisten. Dies ermöglicht eine sichere Abbruch der Operation bei Timeout.