swoole コルーチンはプロセスまたはスレッドに属しますか?

WBOY
リリース: 2022-03-14 15:37:57
オリジナル
2817 人が閲覧しました

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

swoole コルーチンはプロセスまたはスレッドに属しますか?

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

swoole コルーチンはプロセスですか、それともスレッド?

プロセスとは何ですか?

プロセスはシステム内で実行されているプログラムであり、プログラムが実行されると、それはプロセスになります。

プロセスは、プログラム実行のインスタンスとして見ることができます。

タグ: あるプロセスは別のプロセスの変数やデータ構造にアクセスできません。あるプロセスが別のプロセスのリソースにアクセスしたい場合は、パイプ、ファイル、ソケットなどのプロセス間通信を使用する必要があります。 、など。

スレッドとは何ですか?

スレッドはプロセスに属し、プログラムの実行者です。

A プロセスには少なくとも 1 つのメイン スレッドが含まれており、さらに多くのサブスレッドを持つこともできます。各スレッドは、それが属するプロセスのスタック スペースを使用します。

スレッドはプロセスの実体であり、プロセスの実行パスです。

タグ: 同じプロセス内の複数のスレッドは状態の一部を共有し、複数のスレッドは同じメモリを読み書きできます。

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

コルーチンは比較的抽象的です。プログラム内の特定のスケジューリング メカニズムです。

コルーチンは軽量のスレッドです。コルーチンの作成、切り替え、一時停止、および破棄はすべて、メモリの動作、消費量は非常に少ないです。

コルーチンはスレッドに属し、コルーチンはスレッド内で実行されます。

コルーチンのスケジューリングはユーザーが手動で切り替えるため、ユーザー空間スレッドとも呼ばれます。

コルーチンのスケジューリング戦略は、協調スケジューリングです。

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

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

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

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

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

フラッシュ セール システム、高性能 API インターフェイス、RPC サーバーなどの同時実行性の高いサービスでは、コルーチン モードが使用され、障害が発生します。サービスの許容率が大幅に向上し、一部のインターフェースに障害が発生してもサービス全体が崩壊しなくなりました。

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

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

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート