Junior — Middle
Come si può interrompere l'esecuzione di una goroutine dopo un tempo specificato se non si è ricevuto alcun risultato?
sobes.tech AI
Risposta dell'AI
In Go, per interrompere l'esecuzione di una goroutine dopo un tempo specificato, si utilizza generalmente select con un timer o un contesto con timeout.
Esempio con time.After:
select {
case result := <-ch:
// elaborare il risultato
case <-time.After(2 * time.Second):
// timeout — risultato non ricevuto in 2 secondi
}
Esempio con contesto:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// elaborare il risultato
case <-ctx.Done():
// timeout o cancellazione
}
In questo modo, se il risultato non arriva in tempo, l'esecuzione può essere interrotta e il timeout gestito.