Maison >développement back-end >Golang >Comment puis-je terminer gracieusement les Goroutines et gérer les erreurs dans Go ?
Dans le domaine de la concurrence Go, la gestion transparente de la terminaison des goroutines et des erreurs est cruciale. Prenons un cas d'utilisation simple dans lequel nous visons à récupérer des données de plusieurs serveurs distants simultanément, en renvoyant la première erreur rencontrée.
Une première tentative peut impliquer une fuite de goroutines, comme souligné dans ce qui suit extrait de code :
func fetchAll() error { wg := sync.WaitGroup{} errs := make(chan error) leaks := make(map[int]struct{}) //... }
Pour résoudre ce problème, nous pouvons soit utiliser le contexte, soit utiliser le package errgroup :
Le package errgroup offre un moyen pratique pour gérer les terminaisons et les erreurs des goroutines. Il attend automatiquement la fin de toutes les goroutines fournies ou annule celles restantes en cas d'erreur.
func fetchAll(ctx context.Context) error { errs, ctx := errgroup.WithContext(ctx) //... return errs.Wait() }
Ce code gère élégamment la terminaison des goroutines et renvoie la première erreur rencontrée.
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!