
_START_ARTICLE_
FIFO
_START_SECTION_
データ構造
_START_PARAGRAPH_
キューに格納されたデータの処理方法のひとつである。キュー上の各要素はキューのデータ構造内に格納される。FIFOのキューでは、最初に格納されたデータが、(後で)最初に取出されると同時に削除される。入出力（格納と取出し）は常にその順番で行われる。同義語としてLILO（Last In Last Out）がある。これはキューの一般的な動作である。これの対称として、先入れ後出し（後入れ先出し）の順序があり、スタックまたはLIFOを参照されたい。_NEWLINE_典型的なデータ構造は次のようになる。_NEWLINE__NEWLINE_ struct fifo_node {_NEWLINE_   fifo_node *next;_NEWLINE_   value_type value;_NEWLINE_ };_NEWLINE__NEWLINE_ class fifo_NEWLINE_ {_NEWLINE_   fifo_node *front;_NEWLINE_   fifo_node *back;_NEWLINE_   fifo_node dequeue(void)_NEWLINE_   {_NEWLINE_     fifo_node *tmp = front;_NEWLINE_     front = front->next;_NEWLINE_     return tmp; _NEWLINE_   }_NEWLINE_   queue(value)_NEWLINE_   {_NEWLINE_     fifo_node *tempNode = new fifo_node;_NEWLINE_     tempNode->value = value;_NEWLINE_     back->next = tempNode;_NEWLINE_     back = tempNode;_NEWLINE_   }_NEWLINE_ }_NEWLINE_この例では、queue(value) で valueがキューに格納され、dequeue() でキューの先頭のデータを取り出すようになっている。
_START_SECTION_
パイプ
_START_PARAGRAPH_
一般に、いわゆる「パイプ」の動作はFIFOだが、特にファイルシステム名前空間に名前が作られる「名前付きパイプ」は、ファイルシステム中での種別（通常ファイル、ディレクトリ、デバイスファイル、etc）として「FIFO」と呼ばれている。
_START_SECTION_
論理回路
_START_PARAGRAPH_
論理回路では、データの流れる方向が一方向であるという特性のある記憶装置として、バッファリングに使われる。実現方法としては、シフトレジスタのようにデータ全体が一方向に動くという方法と、アドレス付けされたメモリと書込み・読出しの各ポインタ、制御ロジックを組み合わせる方法がある。_NEWLINE_重要な役割を果たしているFIFOとしては、デュアルポートSRAMがある。一方のポートがライトに使われ、もう一方がリードに使われる。_NEWLINE_同期型FIFOはリードとライトに同じクロックを使用するものである。非同期型FIFOは異なったクロックを使用する。非同期型FIFOは準安定性問題をはらんでいる。非同期型FIFOでは書込み・読出しのポインタの番地変化にインクリメントではなくグレイコードを使い、安定した信号生成ができるようにする。_NEWLINE_FIFOにはいくつかのフラグが付属する。フラグはFIFOの状態を表し、いっぱいになっているとか、もうすぐいっぱいになるとか、ほとんど空だとかいうことを示す。空きが設定した容量以下・以上になったら割込みを起こすよう設定できるものも多い。