ホームページ > バックエンド開発 > Golang > 長期にわたって実行されている Go プログラムが途中で終了しないようにするにはどうすればよいですか?

長期にわたって実行されている Go プログラムが途中で終了しないようにするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-16 13:58:16
オリジナル
444 人が閲覧しました

How Can I Keep a Long-Running Go Program from Terminating Prematurely?

長時間実行される Go プログラムを存続させるためのベスト プラクティス

長時間実行される Go プログラムを途中で終了させずに実行することは、特定のアプリケーション。 main 関数が終了するとプログラムも終了し、実行中のゴルーチンはすべて孤立したままになります。プログラムが有効なときに存続していることをどのように確認しますか?

メインのゴルーチンが終了するのを防ぐための一般的な戦術の 1 つは、fmt.Scanln() への単純な呼び出しを使用することです。ただし、コンソールとの対話を意図していない場合、このオプションには問題があります。

代わりに、次の推奨事項を検討してください:

  1. 永久ブロック:
    無期限待機の場合は、select {} を使用してメインの goroutine をブロックします。このアプローチにより、select ステートメントが中断されない限り、プログラムは確実に存続します。

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        go forever()
        select {} // block forever
    }
    
    func forever() {
        for {
            fmt.Printf("%v+\n", time.Now())
            time.Sleep(time.Second)
        }
    }
    ログイン後にコピー

以上が長期にわたって実行されている Go プログラムが途中で終了しないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート