Junior — Middle
Jak można zatrzymać wykonanie goroutine po upływie określonego czasu, jeśli wynik nie został otrzymany?
sobes.tech AI
Odpowiedź od AI
W Go, aby zatrzymać wykonywanie goroutine po określonym czasie, zwykle używa się select z timerem lub kontekstem z limitem czasu.
Przykład z time.After:
select {
case result := <-ch:
// przetwarzanie wyniku
case <-time.After(2 * time.Second):
// limit czasu — wynik nie został otrzymany w ciągu 2 sekund
}
Przykład z kontekstem:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// przetwarzanie wyniku
case <-ctx.Done():
// limit czasu lub anulowanie
}
W ten sposób, jeśli wynik nie nadejdzie na czas, można przerwać wykonanie i obsłużyć limit czasu.