今日、私は繊維、コルーチン、緑の糸についてインターネットでいくつかの記事を読んでいた。これらの概念は非常に共通しているようだが、特に繊維とコルーチンについて話すときは、わずかな違いがある。
それらが互いに異なる理由の簡潔で正しい要約はありますか?
更新:繊維とコルーチンの区別に特に優れているのは、コルーチンと繊維の識別(N4024 C ++ドラフト)文書です。
今日、私は繊維、コルーチン、緑の糸についてインターネットでいくつかの記事を読んでいた。これらの概念は非常に共通しているようだが、特に繊維とコルーチンについて話すときは、わずかな違いがある。
それらが互いに異なる理由の簡潔で正しい要約はありますか?
更新:繊維とコルーチンの区別に特に優れているのは、コルーチンと繊維の識別(N4024 C ++ドラフト)文書です。
回答:
ファイバーは、協調的マルチタスクの代わりに、プリエンプティブマルチタスクを使用して軽量スレッドです。実行中のファイバーは、別のファイバーを実行できるように明示的に「譲歩」する必要があります。これにより、カーネルまたはユーザースレッドよりも実装がはるかに簡単になります。
コルーチンは、特定の場所で実行を中断および再開するための複数のエントリポイントを可能にするサブルーチンを一般成分です。サブルーチンとは異なり、コルーチンは他のコルーチンを呼び出すことで終了できます。これは、後で元のコルーチンで呼び出されたポイントに戻る場合があります。
グリーンスレッドは、基礎となるオペレーティング・システムによって仮想マシン(VM)の代わりに、ネイティブで予定されているスレッドです。グリーンスレッドは、ネイティブOS機能に依存せずにマルチスレッド環境をエミュレートし、カーネルスペースではなくユーザースペースで管理されるため、ネイティブスレッドをサポートしていない環境で動作できます。