ホームページ  >  記事  >  バックエンド開発  >  golangでプロセスを終了するにはどうすればよいですか?

golangでプロセスを終了するにはどうすればよいですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-18 15:10:107032ブラウズ

Golang のプロセスを終了する方法: 最初に [chan struct{}] を定義し、次に [close()] 関数を呼び出してチャネルを閉じ、終了シグナルを各ゴルーチンに渡します。最後に [< を取得します。 -chan ]、ブレーク ループを終了するだけです。

golangでプロセスを終了するにはどうすればよいですか?

Golang のプロセスを終了する方法:

次は main 関数が func を終了するための解決策です。運用環境 ここで、exit func は多くの終了操作を実行する可能性があり、終了オブジェクトは無限ループが埋め込まれた多くの goroutine である可能性があります。各 goroutine に終了信号を渡すにはどうすればよいですか?

私の通常のアプローチは、chan struct{} を定義することです。チャンネルを閉じるために close() 関数が呼び出されるとき、すべての <- chanこれらの操作は同時に実行されるため、終了シグナルが各 goroutine に渡され、各 goroutine が select を通じてポーリングできるようになります (デフォルトでは、Linux の select はポーリングのために epoll を呼び出します)。 <-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!")
}

関連学習の推奨事項:

Go言語チュートリアル

以上がgolangでプロセスを終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。