Windows で実行されていないゴルーチンの診断
ゴルーチンの複雑さを詳しく調べるために、ゴルーチンの動作を観察するための簡略化されたテストが実施されました。行動。しかし、「テスト」の期待された出力は実現しませんでした。ゴルーチンに十分な時間を与えるための for {} ループが含まれているにもかかわらず、プログラムは沈黙したままであり、エラーや成功の痕跡は残りませんでした。
問題の解明
詳しく調べると、問題の核心はゴルーチンの非同期の性質にあることが明らかになります。ブロック方式で順次実行する従来のスレッドとは異なり、ゴルーチンはメイン プログラムの実行を妨げることなく同時に実行されるように設計されています。したがって、呼び出された関数の完了に対応するためにプログラムの実行が一時停止することはありません。
パズルの解決
この状況を解決し、ゴルーチンの出力を適切に観察できるようにするには、 .Sleep() ステートメントを導入できます。このステートメントは、main 関数の実行を指定された期間一時停止し、ゴルーチンが作業を行うのに十分な時間を提供します。期間を 10 秒などのゼロ以外の値に設定すると、メイン関数が終了する前に、ゴルーチンを実行して出力を出力する十分な機会が与えられます。
改善されたテスト ケース
改訂されたテスト ケースには、次のように time.Sleep() ステートメントが組み込まれています。
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
この変更により、プログラムは test() ゴルーチンを正常に実行し、「test」をコンソール。このアプローチにより、main 関数は goroutine が完了するまで待ってから終了するため、その動作を視覚的に観察できるようになります。
以上がWindows でゴルーチンが実行されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。