Maison  >  Article  >  développement back-end  >  Comment quitter le processus dans Golang ?

Comment quitter le processus dans Golang ?

coldplay.xixi
coldplay.xixioriginal
2020-07-18 15:10:107052parcourir

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.

Comment quitter le processus dans Golang ?

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!

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