Go スケジューラが GMP モデルに新しい M と P を作成するとき
Go の GMP (Goroutine、Machine、Processor) モデルでは、スケジューラ特定の条件に基づいて M (マシン) と P (プロセッサ) の作成を管理します。
M 作成
M は、次のような特定のイベントに応答して作成されます。
P Creation
P は、GOMAXPROCS 環境変数に基づいてプログラムの起動時に作成されます。使用可能な P の最大数。デフォルト値は、システム上の論理 CPU の数です。
分析例
サンプル コードには、ゴルーチンの 2 つのバッチがあります。データベース操作を実行しています。各ゴルーチンはブロッキング I/O 操作を実行します。
したがって、あなたの場合、スケジューラはゴルーチンの 2 番目のバッチに 8 M を超える M を作成します。操作がブロックされています。 P は GOMAXPROCS 値に基づいて 1 に制限されますが、M は必要に応じて動的に作成されます。
追加リソース
さらに理解するには、次を参照してください。リソース:
以上がGo ルーチンがブロック操作を実行するときに、Go スケジューラはどのようにして新しい M と P を作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。