Die Methode für Golang zum Beenden des Prozesses: Definieren Sie zuerst eine [chan struct{}], rufen Sie dann die Funktion [close()] auf, um den Kanal zu schließen und schließlich das Exit-Signal an jede Goroutine zu übergeben. <-chan ], verlassen Sie einfach die Break-Schleife.
Golangs Methode zum Beenden des Prozesses:
Das Folgende ist eine Lösung für die Hauptfunktion zum Beenden von func, Produktionsumgebung Hier führt die Exit-Funktion möglicherweise viele Schließvorgänge aus, und die zu schließenden Objekte sind wahrscheinlich viele Goroutinen mit eingebetteten Endlosschleifen. Wie wird das Exit-Signal an jede Goroutine übergeben?
Mein üblicher Ansatz besteht darin, eine chan struct{}
-Funktion zu definieren, um den Kanal zu schließen. Alle close()
-Vorgänge werden gleichzeitig ausgeführt, wodurch sichergestellt wird, dass das Ausgangssignal weitergeleitet wird zu jeder Goroutine. Jede Goroutine kann über select abgefragt werden (standardmäßig ruft select epoll zum Abfragen auf, Schleife unterbrechen <-chan
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!") }
<-chan
Verwandte Lernempfehlungen: ). Gehen Sie zum Sprachtutorial
Das obige ist der detaillierte Inhalt vonWie kann ich den Prozess in Golang beenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!