Swoole コルーチンは、より軽量なスレッドです。スレッドには複数のコルーチンを含めることができます。コルーチンはスレッド内で実行されます。主に、スレッド内の競合リソースを協調動作に変換するために使用されます。 IO集中型のタスクを処理します。
#このチュートリアルの動作環境: Windows10 システム、Swoole4 バージョン、DELL G3 コンピューター
swoole コルーチンの意味
まず、コルーチンについて話して、コルーチンの用途とその特徴を理解しましょう。
コルーチンはスレッドよりも軽量な存在です。プロセスが複数のスレッドを持つことができるのと同じように、スレッドも複数を持つことができます。コルーチン。コルーチンには次の特性があります。
- ユーザー モード実行。プログラムによって完全に制御され、オペレーティング システム カーネルによって管理されません。
- IO の処理に適用可能IO 集中型タスクとは、ここでは詳しくは紹介しませんが、CPU 集中型タスクとは主に異なります。
- スレッド内の競合リソースを共同操作に変換します
- チャネルを介したコルーチン間の通信
- プロセスのコンテキスト切り替えとは対照的に、主にスレッド上で実行される少量のコンテキスト切り替えオーバーヘッドコルーチンはスタック リソースに保存されますが、コルーチンは非同期かつノンブロッキングであり、ユーザー モード スレッドのキュー タスクと同等です。チャネルをコールバックとして使用するだけでよく、その後 2 回待つ必要はありません。タスクが完了しました。リソースの取得
コルーチンは単にスレッドとして理解できますが、このスレッドはユーザー モードであり、オペレーティング システムの参加を必要としません。作成コスト、スレッドとは異なり、破壊と切り替えは非常に低いです。コルーチンはマルチコア CPU を利用できません。マルチコア CPU を利用したい場合は、Swoole のマルチプロセス モデルに依存する必要があります。
簡単に言うと、コルーチンは、より軽量な同時実行性を実現するために、スレッドの下でホストされるプログラマによって実装される、一種の協調的な軽量スレッドです。
プログラマの数が増加するにつれて、ボスも爆発的に成長し続けています。もちろん、スレッドは使いにくいと考え始めている人もいますが、どうすればよいでしょうか? もちろん、スレッドの概念に基づいて、より軽く、スターを騙すのに適した一連の軽量スレッドを実装します (実際、スレッドには複数のコルーチンを含めることができるため、コルーチンを完全にスレッドと見なすことはできません)
コルーチンとスレッドの違い
本質
Threadカーネル状態
コルーチン ユーザー状態
スケジューリング方法
スレッドのスケジューリング方法はシステム スケジューリングであり、一般的に使用されるスケジューリング戦略には、タイムシェアリング スケジューリングとプリエンプティブ スケジューリングが含まれます。率直に言って、スレッドのスケジューリングは完全に制御できません。
コルーチンのスケジューリング方法は協調スケジューリングであり、カーネルによって制御されず、自由なポリシー スケジューリングによって切り替えられます
推奨学習:
スウールチュートリアル
以上がスウールコルーチンとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。