# Ringbuffer **Repository Path**: xixixing/ringbuffer ## Basic Information - **Project Name**: Ringbuffer - **Description**: 单生产者、单消费者的无锁环形队列 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-13 - **Last Updated**: 2024-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ringbuffer #### 介绍 单生产者、单消费者的无锁环形队列 #### 说明 在堆中创建定长数组data_buff,用于存储图像数据unsigned char 在data_buff + write_index \* 图像字节数 处插入一帧图,之后write_index增1 在data_buff + read_index \* 图像字节数 处移除一帧图,之后read_index增1 为了防止索引越界,使用了位运算(替代取余,效率更高),元素个数需是2的幂次 #### 使用 ```c++ #include"ringbuffer.hpp" int main() { Ringbuffer<2,1280,1080,1> rb; unsigned char* img1 = new unsigned char[1280*1080*1]; memset(img1, 1, 1280 * 1080 * 1); unsigned char* img2 = new unsigned char[1280 * 1080 * 1]; memset(img2,0, 1280 * 1080 * 1); rb.insert(img1); rb.insert(img2); unsigned char* img; while (rb.readAvailable()) { img = rb.peek(); rb.remove(); } return 0; }