ゴルーチンが実行されないのはなぜですか?
Go プログラミングの分野では、ゴルーチンは同時実行のための強力なメカニズムを提供します。ただし、これらの goroutine が応答していないように見える場合があり、開発者が混乱状態に陥ることがあります。
シナリオ:
goroutine を作成して送信しようとする次の Go コードについて考えてみましょう。チャネル経由のメッセージ:
<code class="go">package main import "fmt" func main(){ messages := make(chan string,3) messages <p>このコードを実行すると、出力は驚くかもしれません:</p> <pre class="brush:php;toolbar:false">Done!
問題:
にもかかわらずgoroutine を作成しても、コードはその中のステートメントを実行しません。理由はメインプログラムの終了にあります。 Go では、ゴルーチンは main 関数とは独立して実行されます。メイン プログラムが終了すると、実行する機会がなかった場合でも、実行中のゴルーチンはすべて終了します。
解決策:
ゴルーチンが途中で終了しないようにするには、ゴルーチンが作業を完了するまでメイン プログラムを存続させておく必要があります。これを実現するには、いくつかのアプローチがあります。
推奨事項:
ゴルーチンの動作と並行性をより包括的に理解するにはGo、Golang ブログの優れたブログ投稿「Go の同時実行性」を読むことを強くお勧めします。
以上がGoroutine が実行前に終了してしまうのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。