ファイバー (コンピュータ)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/24 00:45 UTC 版)
ファイバー(英: fiber)は、計算機科学の分野において、非常に軽量な実行スレッドを示す。
ファイバー同士はスレッドと同じくアドレス空間を共有するが、ファイバーが協調マルチタスクを使用するのに対し、スレッドはプリエンプティブマルチタスクを用いる。スレッドでは、ビジーなスレッドに割り込み他のスレッドを復帰させるためにカーネルのスレッドスケジューラを用いることが多いが、ファイバーは他のスレッドを実行させるために自ら制御を譲る。
ファイバーとコルーチン
ファイバーはコルーチンと本質的には同じ概念である。違いは、もしあるとすればコルーチンが言語レベルの構造で、制御の流れの形態の一つであるのに対し、ファイバーはシステムレベルの構造であり、並行に動作しないスレッドと捉えられる点である。どちらに近いか異論はあろうが、ファイバーはコルーチンの実装か[1]、あるいは、コルーチンを実装するための基盤と捉えることができるかもしれない[2]。
利点と欠点
ファイバーのマルチタスクは協調的であるため、スレッドセーフネスはプリエンプティブにスケジュールされるスレッドと比べて問題となりにくく、また暗黙のうちに同期が行われているためスピンロックなどの同期の機構や、アトミックな操作は不要である。 しかし、ノンブロッキング I/Oを行う際暗黙のうちに処理を譲るライブラリが多く、十分な注意とドキュメントの熟読が推奨される。
欠点としては、ファイバーはプリエンプティブなスレッドを用いない限りマルチプロセッシングの機構を活用できない点がある。しかし、CPU コア数以下のプリエンプティブスレッドを用いた N:M スレッドモデルでは、純粋なファイバーやプリエンプティブなスレッドより効率的である。
オペレーティングシステムのサポート
スレッドに比べて、オペレーティングシステムがファイバーをサポートするために必要なことはわずかでよい。ファイバーは現代的なUnixシステム上では、GNU Portable Threadsが行っているように ucontext.h で定義されたgetcontext, setcontext, swapcontext 関数を用いて実現できる。
Microsoft Windows では、ファイバーはWindows API関数である ConvertThreadToFiber() あるいは CreateFiber() の呼び出しで作成することができる。一時停止したファイバーはどのスレッドでも復帰させることができる。変数のファイバー固有のコピーを作成するために、スレッド局所記憶に類似したファイバー局所記憶 (fiber local storage) を使用することができる[3]。
JavaScript でのサポート
JavaScript は元々はシングルスレッドで動作させる設計になっていたが、HTML5 より、アドレス空間を共有しない、Web Workers が追加になった。それらとは別に、Node.js では、アドレス空間を共有するが、協調マルチタスクな設計となっているファイバーが fibers パッケージ[4]にて提供されている。
脚注
関連項目
外部リンク
「ファイバー (コンピュータ)」の例文・使い方・用例・文例
- ファイバーオプティックスは様々な分野で利用されている。
- カーボン・ファイバーで出来ているので、我が社のアルペンホルンはとても軽いのです。
- 現代社会の持続的発展に、ポリマーとファイバーは重要な役割を果たしてきました。
- マイクロファイバークロスは、髪の毛の100分の1という細さの繊維で編みあげられたクロスです。
- 博文は天井にグラスファイバーの断熱材を入れた。
- 光ファイバーケーブルは人間の髪の毛ほどの細さの小さなガラスでできている。
- 日本は光ファイバーの研究ではなはだしく立ち遅れしている.
- ファイバーはX型に交わる
- 光ファイバーの、または、光ファイバーに関する
- 盲腸から結腸まで全体の結腸を検査する細長い光ファイバーの内視鏡
- 光速で大量の情報を伝送できる、光ファイバーでできたケーブル
- 光ファイバーケーブルを用いた通信システム
- 内臓を調べるのに用いられるファイバー・オプティックスを含んでいる柔軟な医療機器
- 釣り糸を延ばすために釣りにおいて使われる木、鋼またはファイバーグラスのロッド
- 陸線は、ワイヤーまたはファイバー・オプティックスまたは電子レンジになるだろう
- S状結腸を調べるための内視鏡(柔軟な光ファイバー・プローブ)
- 綿または羊毛のファイバーを連続的にねじり巻くために以前は使用される紡績機
- なめらかな葉と黄色い花を持って、強いファイバーをもたらす熱帯アジアの高い一年生草本か半低木
- 鋼鉄のファイバーを編み合わせたもので、研磨用
- 樹脂のグラスファイバーから成る被覆物
- ファイバー_(コンピュータ)のページへのリンク