Maison > développement back-end > Golang > le corps du texte

Comment ajouter un délai d'attente à WaitGroup.Wait() dans Go ?

Susan Sarandon
Libérer: 2024-11-21 06:03:09
original
732 Les gens l'ont consulté

How to Add a Timeout to WaitGroup.Wait() in Go?

Fatigué d'attendre éternellement ? Ajout d'un délai d'attente à WaitGroup.Wait()

Lorsque vous utilisez WaitGroup.Wait() pour synchroniser les goroutines et vous assurer qu'elles terminent leur exécution, vous pouvez parfois souhaiter avoir la possibilité de mettre fin à l'attente après une durée spécifique. Cela empêche votre système de dépendre sans fin de travailleurs errants qui pourraient ne jamais terminer leurs tâches.

Une solution pragmatique pour les groupes d'attente chronométrés

Une approche pour mettre en œuvre un délai d'attente consiste à utiliser un combinaison de goroutines, de chaînes et du forfait horaire. L'idée est de créer un canal qui reçoit un signal à la fin de toutes les goroutines. Simultanément, une minuterie est initialisée avec la durée de temporisation souhaitée. Une instruction select est utilisée pour surveiller à la fois le canal et la minuterie :

Simplification du délai d'attente avec des fonctions d'assistance

Pour offrir une approche plus pratique et réutilisable, envisagez de créer une fonction d'assistance qui encapsule cette fonctionnalité :

Cette fonction d'assistance accepte un WaitGroup et un délai d'attente souhaité. durée et indique si l'attente a dépassé ou non la limite spécifiée.

Utilisation de la fonction d'assistance

L'utilisation de la fonction d'assistance est simple :

Dans cet exemple, la fonction waitTimeout renvoie true si le groupe d'attente prend plus de 5 secondes, indiquant qu'un délai d'attente s'est produit.

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