Sobes.tech
Junior — Middle

Comment arrêter l'exécution d'une goroutine après un délai spécifié si aucun résultat n'a été reçu ?

sobes.tech IA

Réponse de l'IA

En Go, pour arrêter l'exécution d'une goroutine après un délai spécifié, on utilise généralement select avec un timer ou un contexte avec un délai d'expiration.

Exemple avec time.After :

select {
case result := <-ch:
    // traiter le résultat
case <-time.After(2 * time.Second):
    // délai d'expiration — résultat non reçu en 2 secondes
}

Exemple avec contexte :

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-ch:
    // traiter le résultat
case <-ctx.Done():
    // délai d'expiration ou annulation
}

Ainsi, si le résultat n'arrive pas à temps, l'exécution peut être interrompue et le délai d'expiration géré.