キュー (コンピュータ)
キュー(英: queue)、あるいは待ち行列はコンピュータの基本的なデータ構造の一つ。データを先入れ先出し[1]のリスト構造で保持するものである。キューからデータを取り出すときには、先に入れられたデータから順に取り出される。キューにデータを入れることをエンキュー[2]、取り出すことをデキュー[3]という。
プリンタへの出力処理や、ウィンドウシステムのメッセージハンドラ、プロセスの管理など、データを入力された順番通りに処理する必要がある処理に用いられる。
優先度付きキュー編集
「優先度付きキュー」も参照
キューに追加する要素に優先度をつけ、優先度に基づいて、キュー内でソートするのを優先度付きキューといい、高速化のためのアルゴリズムが色々研究されていて、また、色々な他のアルゴリズムで間接的に使われている。
キューの応用編集
- メッセージキュー: メッセージのキュー。UNIX では、
msgsnd
およびmsgrcv
システム・コールにより、それぞれデータを送信および受信できる。データを送信する先は同じプロセスであってもよいし、他のプロセスであってもよい。また、Windows では、GUI プログラムへイベントを送信するのに用いる。イベント駆動型プログラミングを実現している。プログラムはメッセージ・ループでイベントを受信し、適切な動作を行うように作られる。 - プログラミング言語のライブラリでの実装: プログラミング言語によっては、キューを標準ライブラリとして実装していて、プログラマがキューそのもののプログラムを書かなくても利用できるようになっている。
- ミドルウェアによる実装: 主にあるプログラムから他のプログラムにデータを送信するためにキューを利用しているミドルウェアが作られている。
キューマシン編集
キューマシンは、中間結果格納用にキューを用いる計算モデルである。
演算はエンキューされたデータを用いて行い、その結果をデキューする。そのため、スタックマシンと同じように0オペランドの命令で表現することができる。
また、キューマシンはデータフローに沿って命令を実行することになる。これはキューマシンの特徴の一つといえる。