La méthode permettant à Golang de quitter le processus : définissez d'abord une [chan struct{}] ; puis appelez la fonction [close()] pour fermer le canal et transmettre le signal de sortie à chaque goroutine ; <-chan ], quittez simplement la boucle de rupture.
Méthode de Golang pour quitter le processus :
Ce qui suit est une solution permettant à la fonction principale de quitter func, environnement de production Ici, la fonction de sortie peut effectuer de nombreuses opérations de fermeture, et les objets de fermeture sont probablement de nombreux goroutines avec des boucles infinies intégrées. Comment transmettre le signal de sortie à chaque goroutine ?
Mon approche habituelle consiste à définir un chan struct{}
Lorsque la fonction close()
est appelée pour fermer le canal, toutes les opérations <-chan
seront effectuées en même temps, réalisant ainsi que le signal de sortie est passé. à chaque goroutine. Chaque goroutine peut être interrogée via select (par défaut sous Linux, select appelle epoll pour l'interrogation). Lorsque <-chan
est obtenu, interrompez la boucle
package main import( "fmt" "os" "os/signal" "syscall" ) func main(){ signalChan := make(chan os.Signal,1) //创建一个信号量的chan,缓存为1,(0,1)意义不大 signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)//让进城收集信号量。 fmt.Println("i am workding!") <-signalChan ExitFunc() } func ExitFunc(){ fmt.Println("i am exiting!") }
Recommandations d'apprentissage associées : . Aller au tutoriel de langue
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!