ホームページ  >  記事  >  PHPフレームワーク  >  なぜ swoole コルーチンはシングルスレッドなのでしょうか?

なぜ swoole コルーチンはシングルスレッドなのでしょうか?

WBOY
WBOYオリジナル
2022-03-14 15:46:012536ブラウズ

swoole ではコルーチンの切り替えがシリアルであるため、同時に実行できるコルーチンは 1 つだけです 1 つのコルーチンが実行中は他のコルーチンが停止してしまうため、swoole のコルーチンはシングルスレッドで処理されます。

なぜ swoole コルーチンはシングルスレッドなのでしょうか?

このチュートリアルの動作環境: Windows10 システム、Swoole4 バージョン、DELL G3 コンピューター

swoole コルーチンがシングルスレッドである理由

簡単に言えば、コルーチンは、スレッドの下でホストされるプログラマーによって実装された、より軽量な同時実行性と連携する軽量のスレッドです。

プログラマーの数が増加するにつれて、大手企業は爆発的に増加し続けています。スレッドは使いにくいと考え始めましたが、どうすればよいでしょうか? もちろん、スレッドの概念に基づいて、より軽量でスターを騙すのに適した一連の軽量スレッドを実装します (実際、コルーチンは使用できません)スレッドには複数のコルーチンを含めることができるため、完全にスレッドとみなされます)

コルーチンとスレッドの違い

本質

スレッド カーネル状態

Coroutine User Mode

スケジューリング方法

スレッドのスケジューリング方法はシステム スケジューリングであり、一般的に使用されるスケジューリング方法には、タイムシェアリング スケジューリングとプリエンプティブ スケジューリングが含まれます。率直に言うと、スレッドのスケジューリングは完全に制御できません。

コルーチンのスケジューリング方法は協調スケジューリングであり、カーネルによって制御されず、自由なポリシー スケジューリングによって切り替えられます。

上で述べたように、コルーチンはユーザー モードにあるため、いわゆる協調スケジューリングは、プログラマによって作成されたスケジューリング方法として直接理解でき、システム カーネルを介してスケジュールされることなく、希望どおりにスケジュールを設定できます。

swoole のコルーチンの簡単な理解

swoole のコルーチンを簡単に理解するつもりなので、swoole のコルーチン モデルを知っておく必要があります。

Swoole のコルーチンはシングルスレッドに基づいています。コルーチンの切り替えはシリアルであり、同時に実行されるコルーチンは 1 つだけであることがわかります。

Swoole のコルーチンは基盤となる実装ではシングルスレッドであるため、同時に実行されるコルーチンは 1 つだけです。 . コルーチンの作業、実行はシリアルです。これはスレッドとは異なり、オペレーティング システムによって複数のスレッドが複数の CPU にスケジュールされ、並列実行されます。

1 つのコルーチンが実行されていると、他のコルーチンは動作を停止します。現在のコルーチンは、ブロッキング IO 操作を実行するとハングし、基礎となるスケジューラーがイベント ループに入ります。 IO 完了イベントが発生すると、基礎となるスケジューラーはイベントに対応するコルーチンの実行を再開します。

CPU マルチコアの利用は、依然として Swoole エンジンのマルチプロセス メカニズムに依存しています。

推奨学習: swoole チュートリアル

以上がなぜ swoole コルーチンはシングルスレッドなのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。