Heim >Backend-Entwicklung >Golang >Wie kann ich den Prozess in Golang beenden?

Wie kann ich den Prozess in Golang beenden?

coldplay.xixi
coldplay.xixiOriginal
2020-07-18 15:10:107087Durchsuche

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.

Wie kann ich den Prozess in Golang beenden?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn