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!