Maison  >  Article  >  développement back-end  >  Comment interrompre gracieusement l'exécution d'une goroutine (*TCPListener).Accept() ?

Comment interrompre gracieusement l'exécution d'une goroutine (*TCPListener).Accept() ?

DDD
DDDoriginal
2024-11-03 16:53:03819parcourir

How to Gracefully Interrupt a Goroutine Executing (*TCPListener).Accept()?

Interruption d'une exécution de Goroutine (*TCPListener) Accepter

Lors de la création d'un serveur qui répond aux clients via une connexion TCP, une go-routine est souvent utilisé pour gérer les connexions entrantes à l'aide de (*TCPListener).Accept(). La question se pose de savoir comment arrêter proprement le serveur et interrompre la goroutine bloquée lors de cet appel.

La documentation de (*TCPListener).Accept() indique qu'il attend la prochaine connexion et renvoie un générique Connecticut. Cependant, il fournit des informations limitées sur la façon d'interrompre cette opération de blocage.

La solution réside dans l'utilisation de (TCPListener).Close(), qui ferme l'écouteur et provoque l'exécution de la goroutine (TCPListener).Accept() pour revenir. Cela permet au serveur d'être arrêté en douceur et d'interrompre la routine de démarrage. La routine go devrait alors revenir de l'appel et permettre au serveur de se terminer proprement.

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