- 723 名前:デフォルトの名無しさん [2007/09/22(土) 13:09:35 ]
- このスレッドがふさわしいかどうかわかりませんが、
質問させてください。 C++でリングバッファを作成しようと思っています。 Read PointerとWriter Pointer、そしてBufferを用意し、 Bufferから"複数バイト"を取得する、という処理です。 for(int i = 0; i < num; i++) if(ReadPointer != WritePointer){ value = Buffer[ReadPointer]; ReadPointer = (ReadPointer + 1)%BufferSize; } else break; } 上記のように1バイトずつ読み込むならこれでいいとおもうのですが、 これでは1バイトごとに条件文+インクリメントが入るため避けたいです。 一気に複数バイトを読み込むことを考慮した場合、 "ReadPointerがWritePointer"を 越えないことを判断して、バッファを参照することが必要です。 複数バイトを読み込む場合を考慮したリングバッファを実現する スマートなアルゴリズムはあるのでしょうか? ReadPointer < WritePointerの位置関係からバッファ読み込みを 一気に行うことは容易ですが、ReadPointer > WritePointerの 位置関係からバッファ読み込みを一気に行う処理で詰まっています。
|

|