是什么?
RingBuffer (环形缓冲区),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流(用来实现轮转功能的日志也很合适)。
它亦是一个队列,先进先出(FIFO)。这意味着,入队永远是在环的尾部(tail),出队永远是在环的头部(head)。这个环的容量是一开始就确定的,那么不停变换的,是头尾两个指针:入队驱动tail,出队驱动head,在环上单向轮转。
性能优势
我们可以将RingBuffer实现为一个不停覆盖尾部的版本, 以提供一种高性能的有限无锁队列:
- 它使用数组,比链表要快,且基于一个可预测的访问模式(数组内元素的内存地址 具有连续性[……]