循环字符缓冲区





2.00/5 (1投票)
1999年12月10日

92341

1484
一个循环、线程安全的读/写字符缓冲区
我最近需要一个类来将字符数组存储为循环缓冲区。 如果您不熟悉循环缓冲区,它是一个永久分配的缓冲区,具有读和写位置。 我过去做过几个,但丢失了所有的示例。 所以我写了一个新的,并将其放入一个名为 CircularBuffer 的类中。 CircularBuffer 可以从中读取和写入,并且具有获取读取和写入计数的方法。 随着向缓冲区写入,写入位置会增加到缓冲区末尾,到达末尾时,写入位置会回绕到缓冲区的开头,然后从那里开始写入。 相同的操作也发生在读取操作上,但读取位置会递增。 重要的是要注意,读取位置永远不会大于写入位置,因为如果大于,我们将读取尚未写入缓冲区的数据。 同样,写入位置也不会绕过读取位置,否则未读取的数据将被覆盖。
基本操作是读和写,如果可能发生重叠情况,则两者都会失败。
要获取可读取的可用字符数,请使用 readCount
方法。 如果计数大于零,请使用 read 方法获取最新写入缓冲区的内容。
我已经在 TestQue 项目中包含了一个小的测试应用程序。 测试驱动程序位于 TestQue.cpp
中。 它是一个使用 VC6 开发的多线程 Win32 控制台应用程序。
CircularBuffer 代码位于 CicularBuffer.cpp 和 h 中。