capypad
0 Tage Serie
go / intermediate
Snippet

Abbruchsteuerung mit context.WithTimeout

Das Context-Paket ist essenziell für die Steuerung von Lebenszyklen und den Abbruch nebenläufiger Prozesse. WithTimeout erstellt einen abgeleiteten Kontext, der sich nach einer bestimmten Zeit automatisch beendet, um zu verhindern, dass Goroutinen endlos laufen.

snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
func fetchData(ctx context.Context) {
ctx, cancel := context.WithTimeout(ctx, 2*time.Second)
defer cancel()
 
select {
case <-time.After(3 * time.Second):
fmt.Println("Finished task")
case <-ctx.Done():
fmt.Println("Cancelled:", ctx.Err())
}
}
Erklärung
1
context.WithTimeout(ctx, 2*time.Second)
Erstellt einen Kontext, der nach 2 Sekunden abläuft.
2
defer cancel()
Stellt sicher, dass Ressourcen freigegeben werden, sobald die Funktion endet.
3
case <-ctx.Done():
Empfängt ein Signal, wenn das Zeitlimit erreicht oder 'cancel' aufgerufen wurde.