Junior — Middle
Wie kann man die Ausführung einer Goroutine nach Ablauf einer bestimmten Zeit stoppen, wenn kein Ergebnis empfangen wurde?
sobes.tech KI
Antwort von AI
In Go wird zum Beenden der Ausführung einer Goroutine nach einer bestimmten Zeit in der Regel select mit einem Timer oder einem Kontext mit Timeout verwendet.
Beispiel mit time.After:
select {
case result := <-ch:
// Ergebnis verarbeiten
case <-time.After(2 * time.Second):
// Timeout — Ergebnis wurde nicht innerhalb von 2 Sekunden empfangen
}
Beispiel mit Kontext:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// Ergebnis verarbeiten
case <-ctx.Done():
// Timeout oder Abbruch
}
Wenn das Ergebnis nicht rechtzeitig eintrifft, kann die Ausführung abgebrochen und der Timeout behandelt werden.