ホームページ  >  記事  >  バックエンド開発  >  ゴルーチンとコルーチンの違いは何ですか

ゴルーチンとコルーチンの違いは何ですか

青灯夜游
青灯夜游オリジナル
2023-01-10 18:31:121603ブラウズ

違い: 1. Goroutine はチャネルを通じて通信し、Coroutine は生成操作と回復操作を通じて通信します。 2. Goroutine コルーチンは完全に同期されていないため、複数のコアを使用して並列実行できますが、Goroutine コルーチンは完全に同期されており、並列実行されません。 3. Goroutine は複数のコルーチン/スレッド間で切り替えることができ、コルーチンは 1 つのスレッドで実行されます。 4. アプリケーションが長時間にわたって大量の CPU を占有している場合、このタスクを終了する権限は goroutine のユーザーにありますが、coroutine にはありません。

ゴルーチンとコルーチンの違いは何ですか

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

C#、Lua、Python 言語はすべてコルーチン機能をサポートしています。コルーチンとゴルーチンは名前が似ています。どちらも独立した環境で関数またはステートメントを実行できますが、両者には次の 2 つの違いがあります:

  • ゴルーチンは並列で実行できる;

  • ただし、コルーチンは常に順番に実行されます。

ゴルーチンは並列を意味します (または並列にデプロイできる)、コルーチンは通常そうではありません、ゴルーチンはチャネルを通じて通信します、コルーチンは譲歩および再開操作を通じて通信します、ゴルーチンはコルーチンよりも強力です、そしてコルーチンからゴルーチンへのロジックの再利用は簡単です。

狭義には、ゴルーチンはマルチスレッド環境で発生する可能性があり、ゴルーチンは優先度の高いサポートを取得するために自らを制御できません。コルーチンは常に単一スレッドで発生し、コルーチン プログラムは積極的にハンドオーバーする必要があります。ホストが制御を取得する前に制御を取得し、他のコルーチンに制御を転送します。

チャネル通信はゴルーチン間で使用され、コルーチンは歩留まり操作と再開操作を使用します。

ゴルーチンとコルーチンの概念と操作メカニズムは、初期のオペレーティング システムに由来しています。

コルーチンの実行メカニズムは協調的なタスク処理です。初期のオペレーティング システムでは、各アプリケーションがオペレーティング システムのタスク処理ルールに準拠する必要がありました。アプリケーションが CPU を使用する必要がない場合、アプリケーションは CPU を積極的に処理します。 CPU 使用権を超えます。開発者が誤ってまたは意図的にアプリケーションに長時間 CPU を占有させた場合、オペレーティング システムは何もできなくなり、その結果、コンピュータが簡単に応答しなくなったり、フリーズしたりする可能性があります。

Goroutine はプリエンプティブなタスク処理であり、既存のマルチスレッドおよびマルチプロセスのタスク処理によく似ています。アプリケーションによる CPU の制御は最終的にはオペレーティング システムによって管理される必要があり、アプリケーションが長時間にわたって大量の CPU を占有していることがオペレーティング システムによって検出された場合、ユーザーにはタスクを終了する権利があります。

#コルーチンとゴルーチンの違いの概要

違い 1:

  • ゴルーチンはチャネルを通じて通信します;

  • コルーチンは、yield 操作と回復操作を通じて通信します。

違い 2:


  • goroutine コルーチン間の同期が不完全、チャネル設計に応じて、複数のコアを使用して並列実行できます。

  • #コルーチン コルーチンは完全に同期されており、並列実行されません

違い 3:


  • ゴルーチンは複数のコルーチンと複数のスレッドを切り替えることができるため、複数のコアを使用できるだけでなく、切り替えのオーバーヘッドも削減できます。

  • #コルーチンは 1 つのスレッドでのみ実行され、1 つのスレッドでのみ実行されます
  • 違い 4:


    アプリケーションが長時間にわたり大量の CPU を占有していることを goroutine オペレーティング システムが検出した場合、ユーザーはタスクを終了する権利を有します。
  • コルーチン 開発者が誤ってまたは意図的にアプリケーションに長時間 CPU を占有させた場合、オペレーティング システムは何もできなくなり、その結果、コンピュータが簡単に応答しなくなったり、クラッシュしたりする可能性があります。
  • [関連する推奨事項:
Go ビデオ チュートリアル

プログラミング教育 ]

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

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