プロセス、スレッドとコルーチン差(インタビュー)

1--コルーチン

コルーチンのコンセプトはとてもポイントを言って、彼らは自分自身に精通していない、比較的稀です。

また、マイクロスレッドと呼ばれるコルーチンは、シュレッド。英語コルーチン。

サブルーチンや関数が呼び出され、Aなど、すべての言語で呼び出し階層は、実装プロセスではB、Bを呼び出し、Cと呼ばれ、CがBの完成実装を返す、復帰を完了し、Aは最終的に完成しています。

サブルーチンコールがあるので、スタックの実装を通じてスレッドサブルーチンを実行することです。

サブルーチンコールは常に入り口で、順番に復帰コールが明確です。

注- 異なるコルーチンコールとサブルーチン。

コルーチンもルーチンに見えますが、実装プロセスは、サブルーチン内に中断し、次に実行するために再び戻って、適切な時間に、別のルーチンを実行するために有効にしてすることができます。

実装プロセスは、コルーチンでは、他のタスクを実行するために中断することができ完成した後、元の処理に戻ってきている-その仕事2つの以上のプログラムとして理解することができます。

これは、実行のコルーチンシングルスレッドを特徴とします。

一つの利点は、高効率で、タスク切り替えの代わりにスレッドを切り替える(プログラム自体によって制御される)プログラム間で切り替えることである場合ので、これにより、(時間の浪費)にオーバーヘッド切り替えないスレッド、複数のスレッドが存在しませんCtripのの、より多くの明白なパフォーマンス上の利点。

二つの利点:それは、シングルスレッド化作業であるため、複数のスレッドが同時に書き込み変数の競合を考慮する必要がない、不要マルチスレッドロック機構、マルチスレッドよりもとても高い効率がありません。

多くの場合、より高いパフォーマンスを得るために、+コルーチン(マルチコアを使用して)マルチプロセスを使用します。

2--プロセスおよびスレッドとの間の差

1.リソース割り当てプロセスが最小単位であり、スレッドは、プログラム実行の最小単位です。

2. プロセスが独自の別個のアドレス空間を有し、それぞれが、システムは、アドレス空間を割り当てる、プロセスを開始し、コードセグメント、スタックとデータセグメントを保持するデータテーブルを設定し、
スレッドが別のアドレス空間を持っていない、それは同じアドレス空間を使用します共有データ;

3. CPUは、スレッドの切り替えが少ないスイッチング処理よりも時間がかかり、
プロセスのコストよりも小さいスレッドを作成するために、
スレッドが消費はるかに少ないリソースをプロセス⽐に。

4.スレッド間の通信は簡単、同じプロセスの下で、グローバル共有データ変数をスレッド、静的変数、
方法でプロセス間通信(IPC)の通信を必要とし、(マルチスレッド・プログラムが、同期や相互排除を取り扱います難易度)

5、マルチ処理手順安全**、**丈夫、処理ダイは(別のアドレス空間からの)別のプロセスに影響を与えないであろう。
維持するマルチスレッドプログラムがより困難、スレッドダイ全体のプロセスは、(理由は共有アドレススペースの)死んでいます。

6、処理資源高の保護要件、高コスト、比較的低い効率を、
スレッドの保全は非常に、少しオーバーヘッド、高効率、頻繁な切り替えを求めます。

また、私は非常に良い感じ、まとめました -

**基本的な差:**プロセスは、オペレーティング・システム・リソース割り当ての基本単位であり、スレッドがプロセッサタスクスケジューリングの実行の基本単位であります

**リソースオーバーヘッド:**各プロセスは、独自のコードとデータ空間(アプリケーション・コンテキスト)を有し、プログラムの切り替え大きなオーバーヘッドを有し、軽量プロセスのスレッドを見ることができる、共有コードへのスレッドの同じタイプをデータ空間、各スレッドはそれ自身の別個の実行時スタックとプログラムカウンタ(PC)を有し、スレッド間の切り替えの小さなオーバーヘッド。

**含ま関係:**プロセス内の複数のスレッドがある場合は、手順を実行ラインが、互いに完全にライン(スレッド)の複数ではなく、スレッドは、プロセスの一部であるため、スレッドはまた、ライトウェイトとしても知られていますプロセスまたはLWP。

メモリの割り当ては、**:**スレッドが同じプロセスのアドレス空間とリソースのプロセスであり、プロセス間のアドレス空間とリソースを共有し、互いに独立してい

関係に影響を与える:クラッシュコースの後、保護モードは、下の他のプロセスに影響を与えませんが、全体のプロセス・スレッドの崩壊が死んでいます。マルチプロセス、マルチスレッドよりも、それほど堅牢

実装プロセスは:各プロセスは、プログラムの実行順序およびエクスポート順を実行している別の入り口プログラムを実施しています。スレッドは、独立して実行することができない。しかし、それは同時に実行することができ、どちらもアプリケーションプログラムによって制御される複数の実行スレッドを提供する、アプリケーションに応じて存在している必要があります

オリジナルリンクします。https://blog.csdn.net/ThinkWon/article/details/102021274

公開された254元の記事 ウォン称賛23 ビュー50000 +

おすすめ

転載: blog.csdn.net/qq_30242987/article/details/104732156