环形缓冲流
# 环型缓冲区
环型缓冲区是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。
# 构造环型缓冲区
var ringBuffer = new RingBufferStream();
1
# 函数原型
RingBufferStream(int capacity = 8192, bool exposable = true);
1
参数 | 描述 |
---|---|
capacity | 环状缓冲区的最大容量,为2的次方。如:传入12,则实际生效为16 |
exposable | 是否可以访问内部数组 |
# Capacity
缓冲区的实际最大容量。
var capacity = ringBuffer.Capacity;
1
# 函数原型
int Capacity { get; }
1
# WriteableCount
可以被写入的容量。
var writeableCount = ringBuffer.WriteableCount;
1
# 函数原型
int WriteableCount { get; }
1
# ReadableCount
可以被读取的容量。
var readableCount = ringBuffer.ReadableCount;
1
# 函数原型
int ReadableCount { get; }
1
# GetBuffer
获取原始缓冲区,如果exposable
为false
则会引发一个UnauthorizedAccessException
异常。
ringBuffer.GetBuffer();
1
# 函数原型
byte[] GetBuffer();
1
# Read
读取环状缓冲区的数据。
var read = ringBuffer.Read(buffer, offset, count);
1
# 函数原型
int Read(byte[] buffer, int offset, int count);
1
参数 | 描述 |
---|---|
buffer | 读取到的缓冲区 |
offset | buffer 缓冲区的起始偏移量 |
count | 希望读取的长度 |
# Peek
读取环状缓冲区的数据,但是不前移读取位置。
var read = ringBuffer.Peek(buffer, offset, count);
1
# 函数原型
int Peek(byte[] buffer, int offset, int count);
1
参数 | 描述 |
---|---|
buffer | 读取到的缓冲区 |
offset | buffer 缓冲区的起始偏移量 |
count | 希望读取的长度 |
# Write
将数据写入到环型缓冲区,返回值为实际写入的长度。
var write = ringBuffer.Write(buffer, 0, buffer.Length);
1
# 函数原型
int Write(byte[] buffer, int offset, int count);
1
参数 | 描述 |
---|---|
buffer | 希望写入到环型缓冲区的数据 |
offset | buffer 缓冲区的起始偏移量 |
count | 写入的长度 |
# Clear
清空环型缓冲区。
ringBuffer.Clear();
1
# 函数原型
void Clear();
1
上次更新: 2023/10/17, 17:20:06 访问次数: 0