ゴルーチンと時間の重要性.Sleep()
ゴルーチンを扱うとき、時間が必要になることがよくあります。Sleep( )。この記事では、Goroutine 実行における time.Sleep() の重要性を掘り下げ、それを省略した場合の結果について詳しく説明します。
Goroutine について
Goroutine は、次のような軽量の実行スレッドです。行く。スレッドとは異なり、ゴルーチンは Go ランタイムによって管理され、プログラム内の他のゴルーチンとメモリを共有します。
time.Sleep() の役割
提供された例では、say() 関数は、画面に「world」を出力するゴルーチンです。 time.Sleep() ステートメントは、ゴルーチンの実行を反復ごとに 100 ミリ秒人為的に遅延させます。
time.Sleep() なし
time.Sleep() ステートメントの場合が削除されると、say("world") ゴルーチンは実行される機会が得られません。これは、Go の goroutine スケジューラが非プリエンプティブであるためです。ゴルーチンは自発的に制御を譲り、他のゴルーチンが実行できるようにします。
プライマリ ゴルーチン
この例の main() 関数はプライマリ ゴルーチンです。 time.Sleep() が削除されると、プライマリ goroutine は制御を放棄することなく、say("hello") を 5 回実行します。その結果、say("world") ゴルーチンは実行されず、「hello」だけが画面に出力されます。
Maintaining Program Execution
In time.Sleep() がない場合、プライマリ goroutine の実行が終了し、プログラムが終了します。これは、プログラムを存続させるために実行されている他のゴルーチンが存在しないためです。逆に、time.Sleep() が使用されると、say("world") ゴルーチンが制御を譲り、プライマリ ゴルーチンが実行され、プログラムが実行を継続できるようになります。
以上が適切なゴルーチンの実行に「time.Sleep()」が重要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。