Sobes.tech
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.