Maison >développement back-end >Golang >Comment interrompre une goroutine bloquée dans (*TCPListener) Accepter ?

Comment interrompre une goroutine bloquée dans (*TCPListener) Accepter ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 07:31:301072parcourir

How to interrupt a goroutine blocked in (*TCPListener) Accept?

Interruption d'un Goroutine bloqué dans (*TCPListener) Accepter

Lors du développement d'un serveur qui répond aux clients TCP, les développeurs peuvent rencontrer une situation où ils doivent s'arrêter proprement le serveur et interrompre une goroutine actuellement bloquée dans la fonction Accept (*TCPListener). Cette fonction est chargée d'attendre la prochaine connexion client et de renvoyer un Conn générique.

Cependant, la documentation d'Accept indique qu'elle attend le prochain appel, ce qui peut prêter à confusion sur la façon d'interrompre la goroutine bloquante. . La documentation manque également d'informations complètes sur la gestion des erreurs.

Pour résoudre ce problème, utilisez simplement la méthode Close() sur l'objet net.Listener obtenu à partir de l'appel net.Listen(...). Cette action ferme l'écouteur, interrompant la goroutine en attente dans Accept. Il est essentiel de revenir rapidement de la goroutine en cours d'exécution pour éviter toute condition de course potentielle.

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!

Déclaration:
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