導入
IT では、ファイバーは特に軽量な実行スレッドです。
スレッドと同様に、ファイバーは同じ仮想メモリを共有します。ただし、ファイバーは必然的に協調的なマルチタスクを使用し、スレッドは一般にプリエンプティブ マルチタスクを使用します。スレッドは多くの場合、ビジー状態のスレッドをプリエンプトして別のスレッドの実行を再開するためにカーネルスケジューラに依存します。別のファイバーが独自の実行を継続できるようにするには、ファイバーは手動で実行をレンダリングする必要があります。

ファイバーとコルーチン
ファイバーは基本的にコルーチンと同じ概念を記述します。違いがあるとすれば、コルーチンは言語自体の概念であるのに対し、ファイバーはどちらかというとオペレーティング システムの領域であり、同時に実行されないスレッドとして見られることです。ある概念の他の概念への依存関係は明確ではありません。ファイバーは、コルーチンの実装、またはコルーチンが実装される機能とみなすことができます。

オペレーティング システムに応じたファイバーのサポート
ファイバーはスレッドよりもオペレーティング システムからのサポートを必要としません。これらは、 GNU Portable Threadsライブラリのucontext.hヘッダーで定義されているgetcontext、setcontext、swapcontextなどの関数を使用して、最新のUnixシステムに実装できます。
Microsoft Windowsでは、ファイバーは ConvertThreadToFiber および CreateFiber の呼び出しによって作成されます。任意のスレッドで実行の再開を確認できる中断されたファイバー。ファイバー ローカル ストレージは、スレッド ローカル ストレージに似ており、ファイバーの一意の変数のコピーを作成するために使用できます。
Symbian OS は、アクティブ スケジューラでファイバーと同様の概念を使用します。アクティブ オブジェクト (Symbian OS) には、非同期タスクの 1 つが完了したときにアクティブ スケジューラによって実行されるファイバーが含まれています。複数のActive オブジェクトが(優先度に応じて) 実行を待機している可能性があり、それぞれが独自の実行時間を制限する必要があります。

メリットとデメリット
ファイバーは協調マルチタスク モードで動作するため、プリエンプティブ マルチタスクで動作するスレッドの場合のように同期は大きな問題ではなくなりました。同期は暗黙的であるため、ファイバー向けのコードを作成する場合、セマフォ、ミューテックス、操作のアトミック性などの一般的な同期概念は役に立ちません。ただし、一部のライブラリでは特定の操作 (ノンブロッキング I/O など) にファイバーを使用するため、ファイバーを使用する前にドキュメントを読むことをお勧めします。
ファイバーの欠点は、プリエンプティブスレッドを使用しない限り、ファイバーがマルチプロセッサアーキテクチャの恩恵を自動的に受けられないことです。ただし、コア/プロセッサー以上のスレッドを持たない N:M スレッド モデルは、スレッドのみに基づく単純なモデルやファイバーのみに基づく単純なモデルよりも効率的である可能性があります。

