RT-Thread 宝藏之Ringblk组件

RT-Thread 宝藏之ringblk组件

序言

ringblk是什么?
ringblk = ring block(环形块缓冲区),它的缓冲区的单位是一个 block , 每次对数据的操作都是以 block 为单位。

还有一个更加常见的 ringbuf(环形缓冲区,一种数据结构)。ringbuf就是比较常见的先入先出(FIFO,First-In-First-Out)的环形缓冲区。

下面是两者的一些对比:

  1. 数据存储方式
    • ringbuf:传统的环形缓冲区,通常由固定大小的单字节组成,数据以连续的方式存储。
    • ringblk:环形块缓冲区,由多个大小不一的数据块组成,每个块可以包含多个字节。
  2. 内存效率
    • ringbuf:可能需要更多的内存拷贝操作,因为它通常以单字节为单位操作数据。
    • ringblk:设计用于减少内存拷贝,通过块操作可以提高内存使用效率。
  3. 适用场景
  • ringbuf:适用于简单的数据流处理,如字符设备驱动程序。
  • ringblk:适用于需要高效处理大块数据的场景,如DMA传输、通信帧的接收与发送、网络通信等。
  1. 性能
    • ringbuf:在处理小数据或字符流时可能表现良好。
    • ringblk:由于减少了内存拷贝(零字节拷贝zero-copy),可能在处理大块数据时提供更好的性能。

ringblk提供了更高级的特性,特别是在处理大块数据和需要高效率数据传输的场景中。
ringbuf则适用于对简单连续数据流的处理。

RT-Thread 环形块状缓冲区 参考资料


RT-Thread 宝藏之Ringblk组件
https://www.oikiou.top/2024/5b8b4de/
作者
Oikiou
发布于
2024年6月4日
许可协议