littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于C语言的环形缓冲区开源库

项目简介

环形缓冲区是一种固定大小的数据结构,利用单个、固定大小的缓冲区实现环形结构。其固定大小特性让内存使用高效,避免了动态内存分配带来的开销和内存碎片问题,非常适合资源受限的嵌入式系统。该数据结构广泛用于音频流、网络数据包处理、日志记录等需高效处理流式数据的场景。本项目是一个用C语言编写的高移植性环形缓冲区库,支持多种硬件平台,包括Linux平台和常见嵌入式平台。库内通过指针实现高效读写操作,无需复杂内存管理,且支持多种写入策略配置,能满足不同应用场景需求。

项目的主要特性和功能

  1. 跨平台支持:支持多种嵌入式硬件平台,如Linux内核、FreeRTOS、裸机等,适用于STM32、ESP32、ESP8266等平台。
  2. 写入策略可配置:支持覆盖旧数据和拒绝新数据两种策略,默认配置为拒绝新数据策略,可通过宏定义调整。
  3. 无锁和有锁模式:支持无锁和有锁两种工作模式,通过宏定义配置,适用于单生产者单消费者或多生产者多消费者场景。
  4. 线程安全:在多线程环境下,通过锁机制保证数据的一致性和线程安全。
  5. 高移植性:设计考虑了跨平台需求,可在不同硬件平台上无缝运行。

安装使用步骤

假设用户已经下载了本项目的源码文件,使用步骤如下: 1. 进入项目目录bash cd circular_buffer/ 2. 编译项目bash make 3. 编译静态库bash make lib 4. 运行测试bash make run_tests && ./run_tests 5. 使用指定工具链编译bash make lib CC=/path/to/riscv64-unknown-elf-gcc AR=/path/to/riscv64-unknown-elf-ar 6. 清理生成的文件bash make clean

测试说明

  1. 编译单元测试用例bash make run_tests
  2. 运行单元测试程序bash cd ./bin && ./run_tests
  3. 查看测试结果:测试结果会显示每个测试用例是否通过,例如: ```bash test_case/test_circular_buffer.c:307:test_circular_buffer_init:PASS test_case/test_circular_buffer.c:308:test_circular_buffer_write_and_read:PASS test_case/test_circular_buffer.c:309:test_circular_buffer_full:PASS test_case/test_circular_buffer.c:310:test_circular_buffer_empty:PASS test_case/test_circular_buffer.c:311:test_circular_buffer_boundary:PASS test_case/test_circular_buffer.c:312:test_circular_buffer_random_operations:PASS test_case/test_circular_buffer.c:313:test_circular_buffer_stress_test:PASS test_case/test_circular_buffer.c:314:test_circular_buffer_concurrent:PASS


    8 Tests 0 Failures 0 Ignored OK ```

注意事项

在写入数据策略配置成覆盖旧数据模式下,一定要通过锁进行线程安全保护(裸机除外,因为裸机平台没有多线程的概念,不需要通过锁进行保护)。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】