共计 996 个字符,预计需要花费 3 分钟才能阅读完成。
FIFO 队列文档
先入先出环形缓冲区 (First In First Out, FIFO) 是一种循环缓冲区构造。它利用一个定长数组来循环存储数据, 通过头指针和尾指针来示意队头和队尾, 实现先入先出的缓冲机制。与一般先入先出队列相比, 先入先出环形缓冲区通过循环利用数组空间来优化容量限度, 防止了队列因为空或满而呈现的异常情况。当尾指针追上头指针时, 示意队列已满, 新入队元素会笼罩掉之前入队但未出队的元素。当头指针超过尾指针时, 示意队列为空, 会呈现读取有效数据的危险。
先入先出环形缓冲区空间利用率较高, 工夫复杂度为 O(1)。它通过数组和两个指针的设计奇妙实现了先入先出的数据结构, 解决了一般队列的弊病。
初始化 FIFO 缓存
void fifo_init(fifo_t fifo, void *pool, size_t pool_size);
参数 | 形容 |
---|---|
fifo | FIFO 句柄 |
pool | 内存池 |
pool_size | 内存池大小 |
重置 FIFO 缓存
void fifo_reset(fifo_t fifo);
参数 | 形容 |
---|---|
fifo | FIFO 句柄 |
获取 FIFO 缓存的数据大小
size_t fifo_get_data_size(fifo_t fifo);
参数 | 形容 |
---|---|
fifo | FIFO 句柄 |
返回 | |
size | 缓存的数据大小 |
从 FIFO 缓存读取数据
size_t fifo_read(fifo_t fifo, void *buffer, size_t size);
参数 | 形容 |
---|---|
fifo | FIFO 句柄 |
buffer | 要从 FIFO 缓存读取的数据缓冲区 |
size | 读取大小 |
返回 | |
size | 理论读取的数据大小 |
向 FIFO 缓存写入数据
size_t fifo_write(fifo_t fifo, const void *buffer, size_t size);
参数 | 形容 |
---|---|
fifo | FIFO 句柄 |
buffer | 要写入 FIFO 缓存的数据缓冲区 |
size | 写入大小 |
返回 | |
size | 理论写入的数据大小 |
强制向 FIFO 缓存写入数据
size_t fifo_write_force(fifo_t fifo, const void *buffer, size_t size);
参数 | 形容 |
---|---|
fifo | FIFO 句柄 |
buffer | 要写入 FIFO 缓存的数据缓冲区 |
size | 写入大小 |
返回 | |
size | 理论写入的数据大小 |
———-
下载代码(门路:mr-library/ package / fifo)
———-
许可协定
遵循 Apache License 2.0 开源许可协定,可收费利用于商业产品,无需公开公有代码。
正文完