web-dev-qa-db-ja.com

コルーチンとファイバーの違いの明確化

本の中で Linux System Programming, 2nd Edition、コルーチンとファイバーの違いは次のように説明されています。

コルーチンとファイバーは、スレッドよりもさらに軽量な実行ユニットを提供します(前者はプログラミング言語構造の場合は名前で、後者はシステム構造の場合は名前です)。

コルーチン(言語構造)の例がいくつかありますが、ファイバーの例が見つかりません。

誰かが私にファイバー(システム構造)の例を教えてもらえますか?

14
kasyauqi

boost.coroutine2boost.fiber (C++ライブラリ)を見てください-どちらも同じコンテキスト切り替えメカニズムを使用しています( callcc()/継続 )from boost.context

つまり、コルーチンとファイバーの違いは、ファイバー間のコンテキストスイッチがスケジューラーによって管理されることです(次のファイバーを選択します...)。コルーチンにはスケジューラーの概念がありません。

コルーチンとファイバーの違いのより詳細な説明は、 N4024:コルーチンとファイバーの区別 で読むことができます。

19
xlrg