环形缓冲区

什么是环形缓冲区?

在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。

 

环形缓冲区原理

环形缓冲区通常有一个读指针写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针,而写用户仅仅会影响写指针。如果仅仅有一个读用户和一个写用户,那么就不需要添加互斥保护机制(多线程的互斥锁)就可以保证数据的正确性。如果有多个读写用户访问环形缓冲区,那么就必须添加互斥保护机制来确保多个用户互斥访问环形缓冲区。

 

环形缓冲区其实是一个以循环链表为底层数据结构的循环队列,满足生产者-消费者模型。

环形缓冲区的好处:充分利用分配的内存,减少内存分配的使用,从而减少内存碎片的产生。

环形缓冲区的实现:最重要的就是记录入口指针和出口指针的位置,还有边界判断。

 

参考

环形缓冲区的实现原理和例程:https://blog.csdn.net/yanghonker/article/details/46520397

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值