加载中...

环形缓冲区(Ring Buffer,又称循环缓冲区、循环队列)是一块固定大小的连续内存,通过读指针和写指针对容量取模,使存储空间在逻辑上首尾相连、循环使用。
写入时数据放在写指针处并使其前进,读取时从读指针处取出并使其前进,指针越过末尾后回绕到开头。区分"满"与"空"常用两种办法:留出一个空位,或额外维护元素计数。若容量取 2 的幂,可用位与运算代替取模以提升性能。
环形缓冲区是串口驱动、音频采集、网络收发队列、日志系统等流式场景的标准结构;单生产者单消费者情形下可以做到无锁,高性能消息框架 LMAX Disruptor 的核心也是一个预分配的环形缓冲区。
优点是无需搬移数据、内存固定、缓存友好、易于无锁化;缺点是容量固定,写满后只能阻塞、丢弃或覆盖旧数据。

登录 后参与讨论
暂无讨论,来发表第一条评论吧