分享一个自制的软件FIFO管理库

分享一个自制的软件FIFO管理库

分享一个自制的软件FIFO管理库, 此库已在应用很多大型工程项目上, 上手快速, 操作简单, 只有4个简单的函数:

FIFO_Status FIFO_Create(FIFO_Handle *Handler, const FIFO_ConfigHandle *ConfigHandler) ;/* 创建FIFO */
FIFO_Status FIFO_Delete(FIFO_Handle *Handler); /* 删除FIFO */
FIFO_Status FIFO_Write(FIFO_Handle *Handler, const void *import); /* 写入FIFO */
FIFO_Status FIFO_Read(FIFO_Handle *Handler, void *export); /* 读取FIFO */

此FIFO管理库功能类似于操作系统的队列, 但是本库为独立库, 兼容任何环境, 移植简单, 且注释详细, 更利于学习.
此FIFO管理库支持使用动态内存创建, 支持多任务操作.
详细使用说明请参考附件内的文档 <std_fifo原理说明.pdf> 和 <std_fifo使用教程.pdf>.


软件FIFO适用场景有:
    (1) 突发高速数据缓冲区.
    (2) 任务之间的信号量.
    (3) 等等...

同时安利一下其他的自制库

其他的自制库

如果大家觉得不错的话, 以后都会慢慢发布出来.

std_fifo_V1.2.5.rar下载链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
异步 FIFO 是一种基于硬件或软件实现的数据结构,用于在不同的时钟域之间传递数据,它可以在一个时钟域中接受数据,然后在另一个时钟域中输出相同的数据。下面是一个简单的异步 FIFO 的实现: ```python class AsyncFIFO: def __init__(self, depth): self.depth = depth self.data = [0] * depth self.read_ptr = 0 self.write_ptr = 0 self.count = 0 async def write(self, data): while self.count == self.depth: await asyncio.sleep(0) self.data[self.write_ptr] = data self.write_ptr = (self.write_ptr + 1) % self.depth self.count += 1 async def read(self): while self.count == 0: await asyncio.sleep(0) data = self.data[self.read_ptr] self.read_ptr = (self.read_ptr + 1) % self.depth self.count -= 1 return data ``` 这个异步 FIFO 使用了一个循环缓冲区来存储数据,当缓冲区满时,写入操作将会被阻塞,直到有空间可用。当缓冲区为空时,读取操作将会被阻塞,直到有数据可用。注意到异步 FIFO 使用了 async/await 语法,这使得它可以与异步程序一起使用,例如 asyncio 。 使用异步 FIFO 的示例代码如下: ```python async def producer(fifo): for i in range(10): await fifo.write(i) print(f"producer write: {i}") await asyncio.sleep(0.1) async def consumer(fifo): for i in range(10): data = await fifo.read() print(f"consumer read: {data}") await asyncio.sleep(0.2) async def main(): fifo = AsyncFIFO(depth=5) tasks = [asyncio.create_task(producer(fifo)), asyncio.create_task(consumer(fifo))] await asyncio.gather(*tasks) asyncio.run(main()) ``` 这个示例程序使用了两个协程,一个生产者协程和一个消费者协程,它们分别写入和读取数据到异步 FIFO 中。控制台输出如下: ``` producer write: 0 producer write: 1 producer write: 2 producer write: 3 producer write: 4 consumer read: 0 producer write: 5 consumer read: 1 producer write: 6 consumer read: 2 producer write: 7 consumer read: 3 producer write: 8 consumer read: 4 producer write: 9 consumer read: 5 consumer read: 6 consumer read: 7 consumer read: 8 consumer read: 9 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值