私はGoで書かれた長い実行サーバーを持っています。メインは、プログラムのロジックが実行されるいくつかのゴルーチンを起動します。その後、メインは役に立たない。メインが終了すると、プログラムは終了します。私が今プログラムを実行し続けるために使用している方法はfmt.Scanln()の単純な呼び出しです。私は他の人がどのようにメインから退出するのか知りたいです。以下は基本的な例です。ここではどのようなアイデアやベストプラクティスを使用できますか?長時間実行しているGoプログラムを実行するにはどうすればよいですか?
私はチャンネルを作成し、そのチャンネルで受信してメインの出口を遅らせることを検討しましたが、私のゴルーチンがある時点ですべて非アクティブになると問題になるかもしれません。
サイドノート:私のサーバ(例ではありません)では、プログラムは実際にシェルに接続されているわけではないので、とにかくコンソールとやりとりするのは本当に意味がありません。現時点では機能していますが、私は「正しい」方法を探しています。
package main
import (
"fmt"
"time"
)
func main() {
go forever()
//Keep this goroutine from exiting
//so that the program doesn't end.
//This is the focus of my question.
fmt.Scanln()
}
func forever() {
for ; ; {
//An example goroutine that might run
//indefinitely. In actual implementation
//it might block on a chanel receive instead
//of time.Sleep for example.
fmt.Printf("%v+\n", time.Now())
time.Sleep(time.Second)
}
}
で
例私はそれを作るための6つの方法見つかった - のhttp:// pliutauを。 – pltvs