phpエディタのXiguaが「goルーチンの動作の理由」についての質問に答えます。 Go 言語のルーチン (ゴルーチン) は、同時実行の効果を実現できる軽量の同時実行メカニズムです。ただし、場合によっては、go ルーチンの動作により予期しない結果が生じる可能性があります。これは主に、go ルーチンのスケジューリング メカニズムとメモリ モデルの特性によるものです。 Go 言語の日常的な動作を深く理解する前に、これらの機能とそれがプログラムの動作に与える影響を理解する必要があります。
「Go in action」という本を読んでいますが、その本の goroutine の部分について少し混乱しています。基本的に、次のコードのもの:
リーリー出力は次のとおりです:
リーリー先ほども述べたように、 gomaxprox を 1 に設定すると、一度に 1 つの Goroutine のみを実行できますが、この場合はそうではないようで、実際には両方の Goroutine が並行して実行されています。
Goroutine は同時に実行されます。これは、使用可能なプロセッサがある場合、スケジューラはそれらを並行して実行するようにスケジュールできることを意味します。使用可能なプロセッサが 1 つだけの場合でも、プロセッサは同時に実行されますが、常に 1 つの goroutine のみが実行されます。
Go ランタイムは、どの goroutine が最初に実行されるかについて保証しません。したがって、新しく作成されたゴルーチンのグループの実行順序はランダムです。
以上がgo ルーチンがこのように動作するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。