前言
环形缓冲区是嵌入式常用的数据结构,该数据结构内存大小固定,通常采用定长数组来管理数据,在写入时,如果缓冲区满了,则重新从头开始写入。
CMake配置
cmake_minimum_required(VERSION 3.5.1)
project(ringbuf)
add_executable(ringbuf ringbuf.cpp)
set(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_CXX_FLAGS "--std=c++11")
全部代码
通过模板,分配一个固定大小的内存缓冲,然后循环设置、读取
#include <iostream>
template<class T, size_t N>
class RingBuffer {
private:
T objects[N];
size_t read;
size_t write;
size_t queued;
public:
RingBuffer(): read(0), write(0), queued(0) {}
T& push() {
T& current = objects[write];
write = (write + 1) % N;
queued++;