Maison > développement back-end > Golang > Comment prévenir les fuites Goroutine et annuler les requêtes HTTP dans un délai d'attente ?

Comment prévenir les fuites Goroutine et annuler les requêtes HTTP dans un délai d'attente ?

Linda Hamilton
Libérer: 2024-10-30 09:43:02
original
728 Les gens l'ont consulté

How to Prevent Goroutine Leaks and Cancel HTTP Requests within a Timeout?

Délai d'expiration de Goroutine avec contrôle de concurrence

Dans le code fourni, vous avez implémenté une fonction, Find(), qui utilise une goroutine (instruction go func()) pour récupération de données asynchrone à l'aide de findCicCode(). Vous avez défini un délai d'attente de 50 millisecondes pour recevoir la réponse de la goroutine.

Cependant, vous vous inquiétez des fuites potentielles de la goroutine si le délai d'attente est dépassé. De plus, vous aimeriez pouvoir annuler les requêtes HTTP effectuées par findCicCode() lorsque le délai d'attente se produit.

Prévention des fuites Goroutine

Pour gérer les fuites goroutine, il est essentiel pour garantir que toute goroutine créée dans une portée spécifique est terminée avant la fin de la portée. Dans ce cas, il est important d'annuler la goroutine dans l'instruction select lorsque le délai d'attente est atteint :

<code class="go">case <-time.After(50 * time.Millisecond):
  // Cancel the goroutine to prevent a potential leak
  close(ch)
  return "Request timed out", false</code>
Copier après la connexion

Annulation de la demande HTTP

Pour annuler les requêtes HTTP dans la goroutine, vous pouvez exploiter le contexte.Context et context.CancelFunc fournis par la bibliothèque standard Go :

<code class="go">// Create a context with a timeout of 50 milliseconds
ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
defer cancel()

// Execute the findCicCode() function within this context
data, status := findCicCodeWithContext(ctx)

// If the context is canceled (timeout), the HTTP requests will be aborted</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal