Time.Sleep はゴルーチンをブロックしますか?
time.Sleep の使用法によって、ゴルーチンが妨げられるかどうかという問題が生じます。答えは肯定です。
ただし、ゴルーチンがスレッド間でスケジュールされる方法はリリースごとに変更される可能性があり、プラットフォームによって異なる場合があります。これは、概念的な理解を提供する「MPG モデル」に準拠していますが、スケジューリング アルゴリズムの正確な説明ではありません。
time.Sleep を呼び出すと、スケジューラは、ゴルーチンは単に必要であるが、追加のスレッドは不要であると結論付ける可能性があります。待っている。その結果、スレッド使用率が最適化されます。
例の違い
最初の例では、time.Sleep を使用して、スケジューラは適度な数のスレッドを作成します。ゴルーチンは休止状態です。対照的に、2 番目の例ではディスク I/O を使用しているため、同時ファイル書き込みを処理するために追加のスレッドが必要になります。
どのような場合に考慮すべきか
理論的には可能ですが、意図的なコード操作によって過剰な数のカーネル スレッドが作成されることは、通常の実稼働コードを作成する開発者にとっては一般的な懸念事項ではありません。ただし、スレッド数が異常に多い場合は、コードを調べて根本的な問題に対処することが賢明です。
以上が`time.Sleep` はゴルーチンをブロックしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。