ホーム プログラミング言語 golang go concurrent ゴルーチンとコルーチンの違い(goroutine vs coroutine)

ゴルーチンとコルーチンの違い(goroutine vs coroutine)

 
 
C# 、Lua、 Python言語はすべてコルーチン機能をサポートしています。コルーチンとゴルーチンは名前が似ており、どちらも独立した環境で関数またはステートメントを実行できますが、両者の間には 2 つの違いがあります。
  • ゴルーチンの並列実行が発生する場合があります。
  • ただし、コルーチンは常に順番に実行されます。

ゴルーチンは並列することを目的としています (または並列デプロイできる)、コルーチンは一般にそうではありません、ゴルーチンはチャネルを通じて通信します、コルーチンはイールドおよび再開操作を通じて通信します、ゴルーチンはコルーチンよりも強力で、コルーチンから学ぶのは簡単ですロジックはゴルーチンに多重化されます。

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

ゴルーチンはチャネル通信を使用し、コルーチンはイールドおよび再開オペレーションを使用します。

goroutine と coroutine の概念と操作メカニズムは、初期のオペレーティング システムから生まれました。

コルーチンの動作メカニズムは協調的なタスク処理に属します。初期のオペレーティング システムでは、各アプリケーションはオペレーティング システムのタスク処理ルールに従う必要がありました。アプリケーションが CPU を使用する必要がなくなった場合、アプリケーションは自発的に CPU の使用権を放棄します。 CPU。開発者が不注意または意図的にアプリケーションが CPU を長時間占有することを許可した場合、オペレーティング システムはそれに対して何もすることができず、その結果、コンピュータが簡単に応答しなくなったり、クラッシュしたりする可能性があります。

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

 

「ゴルーチンとコルーチンの違い」についてわかりやすく解説!絶対に観るべきベスト2動画

【ChatGPT】ついにプラグインが一般公開!実際の使い方や使用感と、有名なWolframさんを紹介するぞ~
【Go言語 超入門コース】02.Goとは? |Goの特徴などをわかりやすく解説【プログラミング初心者向け入門講座】