swoole ではコルーチンの切り替えがシリアルであるため、同時に実行できるコルーチンは 1 つだけです 1 つのコルーチンが実行中は他のコルーチンが停止してしまうため、swoole のコルーチンはシングルスレッドで処理されます。
このチュートリアルの動作環境: Windows10 システム、Swoole4 バージョン、DELL G3 コンピューター
簡単に言えば、コルーチンは、スレッドの下でホストされるプログラマーによって実装された、より軽量な同時実行性と連携する軽量のスレッドです。
プログラマーの数が増加するにつれて、大手企業は爆発的に増加し続けています。スレッドは使いにくいと考え始めましたが、どうすればよいでしょうか? もちろん、スレッドの概念に基づいて、より軽量でスターを騙すのに適した一連の軽量スレッドを実装します (実際、コルーチンは使用できません)スレッドには複数のコルーチンを含めることができるため、完全にスレッドとみなされます)
コルーチンとスレッドの違い
本質
スレッド カーネル状態
Coroutine User Mode
スケジューリング方法
スレッドのスケジューリング方法はシステム スケジューリングであり、一般的に使用されるスケジューリング方法には、タイムシェアリング スケジューリングとプリエンプティブ スケジューリングが含まれます。率直に言うと、スレッドのスケジューリングは完全に制御できません。
コルーチンのスケジューリング方法は協調スケジューリングであり、カーネルによって制御されず、自由なポリシー スケジューリングによって切り替えられます。
上で述べたように、コルーチンはユーザー モードにあるため、いわゆる協調スケジューリングは、プログラマによって作成されたスケジューリング方法として直接理解でき、システム カーネルを介してスケジュールされることなく、希望どおりにスケジュールを設定できます。
swoole のコルーチンの簡単な理解
swoole のコルーチンを簡単に理解するつもりなので、swoole のコルーチン モデルを知っておく必要があります。
Swoole のコルーチンはシングルスレッドに基づいています。コルーチンの切り替えはシリアルであり、同時に実行されるコルーチンは 1 つだけであることがわかります。
Swoole のコルーチンは基盤となる実装ではシングルスレッドであるため、同時に実行されるコルーチンは 1 つだけです。 . コルーチンの作業、実行はシリアルです。これはスレッドとは異なり、オペレーティング システムによって複数のスレッドが複数の CPU にスケジュールされ、並列実行されます。
1 つのコルーチンが実行されていると、他のコルーチンは動作を停止します。現在のコルーチンは、ブロッキング IO 操作を実行するとハングし、基礎となるスケジューラーがイベント ループに入ります。 IO 完了イベントが発生すると、基礎となるスケジューラーはイベントに対応するコルーチンの実行を再開します。
CPU マルチコアの利用は、依然として Swoole エンジンのマルチプロセス メカニズムに依存しています。
推奨学習: swoole チュートリアル
以上がなぜ swoole コルーチンはシングルスレッドなのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。