ゴルーチンを終了するための代替アプローチ
特定のシナリオでは、ゴルーチンを開始後に途中で終了することが望ましい場合があります。チャネルと選択を含む従来のソリューションでは、反復的なタスクの中でのゴルーチンの制御が容易ですが、次の例のように、完了前にゴルーチンを停止するにはどのようなオプションがありますか?
package main import ( "time" ) func main() { stop := make(chan string, 1) go func() { time.Sleep(10 * time.Second) stop <- "stop" return }() <-stop }
予想に反して、簡単な方法はありません。 return ステートメントの前にゴルーチンを終了するメカニズム。 Goroutine は自律的に動作し、外部から制御することはできません。これは主に、その軽量な性質と実行スタックへの直接アクセスがないためです。
代わりに、強制終了に推奨されるアプローチには、プログラム全体を突然停止する os.Exit 関数の使用が含まれます。この方法では即時終了が保証されますが、データ損失や予測不可能な結果につながる可能性があるため、慎重に使用する必要があります。
以上が完了前にゴルーチンを途中で終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。