ホームページ  >  記事  >  PHPフレームワーク  >  swooleコルーチンは何ができるのでしょうか?

swooleコルーチンは何ができるのでしょうか?

WBOY
WBOYオリジナル
2022-03-14 16:36:392432ブラウズ

swoole では、コルーチンを同時実行性の高いサービスに使用できます。コルーチン モードを使用するサービスのフォールト トレランス率が大幅に向上します。特定のインターフェイスの障害によってサービスがクラッシュすることはありません。また、これを使用することもできますインスタント メッセージングとチャット用。これにより、通信が完全にブロックされず、各メッセージが即座に処理されることが保証されます。

swooleコルーチンは何ができるのでしょうか?

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

Swoole コルーチンでできること

コルーチンの適用可能なシナリオ

フラッシュ セールス システム、高性能 API インターフェイス、RPC サーバーなどの同時実行性の高いサービスはコルーチン モードを使用し、サービスのフォールト トレランス率は次のようになります。が大幅に増加し、特定のインターフェイスに障害が発生しても、サービス全体が崩壊することはありません。

クローラーは非常に大きな同時実行機能を実現でき、非常に遅いネットワーク環境でも帯域幅を効率的に利用できます。

IM チャット、ゲーム サーバー、モノのインターネット、メッセージ サーバーなどのインスタント メッセージング サービスは、メッセージ通信が完全にノンブロッキングであり、各メッセージ パケットが即座に処理されることを保証します。

コルーチンとは何ですか?

コルーチン (Coroutine) はユーザー モード スレッドとも呼ばれ、プリエンプションではなくコラボレーションを通じて切り替えます。プロセスやスレッドと比較して、コルーチンのすべての操作はユーザー モードで完了でき、作成コストや切り替えコストが低くなります。コルーチンはプロセスを補完するもの、または補完的な関係です。

「ユーザーモード スレッド」とは何かを理解するには、まず「カーネル モード スレッド」が何であるかを理解する必要があります。カーネル状態スレッドはオペレーティング システムによってスケジュールされます。スレッド コンテキストを切り替えるときは、まず前のスレッドのコンテキストを保存してから、次のスレッドを実行する必要があります。条件が満たされたら、前のスレッドに切り替えてコンテキストを復元します。コルーチンにも同じことが当てはまりますが、ユーザー モード スレッドはオペレーティング システムによってスケジュールされるのではなく、プログラマによってスケジュールされる点が異なります。これは、いわゆるユーザー モード スレッドです。

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

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

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

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

推奨学習:

swoole チュートリアル

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

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