1、环形缓冲区
环形缓冲区并不是物理意义上一个首尾相连的环形缓冲区,而是逻辑意义的一个环,是一个先进先出,有一定长度的内存空间,具备对缓冲区的互斥访问功能。
2、程序实现
环形缓冲区通常有一个读指针、一个写指针、一个数据长度、一段内存空间(可以是数组、也可以是链表)
public class RingBuffer
{
private int readPoint;
private int writePoint;
public int Count {
get; set; }
public byte[] BufferData {
get; set; }
public RingBuffer(int size)
{
readPoint = 0;
writePoint = 0;
Count = 0;
BufferData = new byte[size];
}
//写数据
public int Write(byte[] data)
{
if (writePoint + data.Length > BufferData.Length)
{
int writePointBackup = 0;
if (writePoint == BufferData.Length)
{
writePoint = 0;
Buffer.BlockCopy(data, 0, BufferData, writePoint, data.Length);
writePoint += data.Length;
}
else
{
<