バッファの構造の一種で、先頭と末尾が連結され、データを円状(リング状)に蓄えられるようにしたものです。
現実のメモリの上には、円状の領域をつくることはできないので、論理的に円状にあつかう工夫を凝らして実現されます。たとえば、領域自体は配列として直線的に確保し、要素にアクセスする際には、配列の要素数による剰余を取って、添字を求める方法があります。
要素数が 10、剰余の演算子を % とすると、
のようになり、指定の位置が 10以上になったところで先頭に戻り、循環することが分かります。
リングバッファは、キュー(待ち行列)を実装する方法としても利用されます。
リングバッファを使ったキューの実装については、アルゴリズムとデータ構造編【データ構造】第6章で解説しています。
リングバッファの具体的な応用例として、動画や音声のストリーミングがあります。リングバッファにデータをダウンロードしつつ、それを追いかけるように手前側のデータから順に再生していくことで、すべてのデータのダウンロードを待たずに再生を始められます。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |