ホームページ > 記事 > PHPフレームワーク > swoole コルーチンはプロセスまたはスレッドに属しますか?
Swoole コルーチンはスレッドに属します。コルーチンはスレッドで実行されます。コルーチンは軽量スレッドです。Swoole のコルーチンの基礎となる実装はシングルスレッドです。同時に動作するコルーチンは 1 つだけであり、スレッドはオペレーティング システムによって複数の CPU にスケジュールされます。並列実行。
このチュートリアルの動作環境: Windows 10 システム、Swoole 4 バージョン、DELL G3 コンピューター
プロセスとは何ですか?
プロセスはシステム内で実行されているプログラムであり、プログラムが実行されると、それはプロセスになります。
プロセスは、プログラム実行のインスタンスとして見ることができます。
タグ: あるプロセスは別のプロセスの変数やデータ構造にアクセスできません。あるプロセスが別のプロセスのリソースにアクセスしたい場合は、パイプ、ファイル、ソケットなどのプロセス間通信を使用する必要があります。 、など。
スレッドとは何ですか?
スレッドはプロセスに属し、プログラムの実行者です。
A プロセスには少なくとも 1 つのメイン スレッドが含まれており、さらに多くのサブスレッドを持つこともできます。各スレッドは、それが属するプロセスのスタック スペースを使用します。
スレッドはプロセスの実体であり、プロセスの実行パスです。
タグ: 同じプロセス内の複数のスレッドは状態の一部を共有し、複数のスレッドは同じメモリを読み書きできます。
コルーチンとは何ですか?
コルーチンは比較的抽象的です。プログラム内の特定のスケジューリング メカニズムです。
コルーチンは軽量のスレッドです。コルーチンの作成、切り替え、一時停止、および破棄はすべて、メモリの動作、消費量は非常に少ないです。
コルーチンはスレッドに属し、コルーチンはスレッド内で実行されます。
コルーチンのスケジューリングはユーザーが手動で切り替えるため、ユーザー空間スレッドとも呼ばれます。
コルーチンのスケジューリング戦略は、協調スケジューリングです。
コルーチンとスレッドの違い:
Swoole のコルーチンは、基礎となる実装ではシングルスレッドであるため、同時に動作するコルーチンは 1 つだけです。実行はシリアルです。 。これはスレッドとは異なり、オペレーティング システムによって複数のスレッドが複数の CPU にスケジュールされ、並列実行されます。
1 つのコルーチンが実行されていると、他のコルーチンは動作を停止します。現在のコルーチンは、ブロッキング IO 操作を実行するとハングし、基礎となるスケジューラーがイベント ループに入ります。 IO 完了イベントが発生すると、基礎となるスケジューラーはイベントに対応するコルーチンの実行を再開します。
CPU マルチコアの利用は、依然として Swoole エンジンのマルチプロセス メカニズムに依存しています。
コルーチンに適用可能なシナリオ:
フラッシュ セール システム、高性能 API インターフェイス、RPC サーバーなどの同時実行性の高いサービスでは、コルーチン モードが使用され、障害が発生します。サービスの許容率が大幅に向上し、一部のインターフェースに障害が発生してもサービス全体が崩壊しなくなりました。
クローラーは非常に大きな同時実行機能を実現でき、非常に遅いネットワーク環境でも帯域幅を効率的に利用できます。
IM チャット、ゲーム サーバー、モノのインターネット、メッセージ サーバーなどのインスタント メッセージング サービスは、メッセージ通信が完全にノンブロッキングであり、各メッセージ パケットが即座に処理されることを保証します。
推奨学習: swoole チュートリアル
以上がswoole コルーチンはプロセスまたはスレッドに属しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。