前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0

16.4. リング バッファ クラス

SFXRingBuffer クラスは、リング バッファを表すクラスです。

図 16.1. リング バッファの概念図

リング バッファの概念図

リングバッファとは、 ( 概念上 ) 環状に配置されたメモリのことです。その上を右回りに進む書き込みポインターと読み込みポインターがあります。

リングバッファにデータを書き込むと、書き込みポインターが進みます。読み込みポインターは、書き込みポインターで書き込まれた位置まで読み込むことができます。

書き込み操作により読み込みポインターを通り越すことはできません。

例 16.10. リング バッファの使い方

Byte data1[] = {'1', '2', '3', '4', '5', '6', '7', '8'};
Byte data2[] = {'9', 'a', 'b', 'c', 'd', 'e'};
SFXRingBuffer ring;
SFXBuffer buffer;

// リング バッファのサイズを 12 バイトに設定する
ring.Allocate(12);

// 8 バイトのデータを書き込む
ring.Write(data1, sizeof(data1));

// 読み込み用のバッファを確保する
buffer.SetSize(4);

// 4 バイト読み込む
ring.Read(&buffer); // buffer = "1234"

// 6 バイトのデータを書き込む
ring.Write(data2, sizeof(data2));

// 読み込み用のバッファを確保する
buffer.SetSize(10);

// 10 バイト読み込む
ring.Read(&buffer); // buffer = "56789abcde"