我需要一个固定大小的循环缓冲区(创建时可在运行时 Select ,而不是编译时),它可以容纳任何类型的对象,并且需要very个高性能.我不认为会有资源争用问题,因为尽管它是在一个多任务嵌入式环境中,但它是一个合作的环境,因此任务本身可以管理它.
我最初的 idea 是在缓冲区中存储一个简单的 struct ,它将包含类型(简单枚举/定义)和一个指向有效负载的空指针,但我希望它尽可能快,因此我愿意接受涉及绕过堆的建议.
事实上,我很乐意绕过任何标准库来提高原始速度——从我看到的代码来看,它并没有针对CPU进行大量优化:看起来他们只是编译了strcpy()
之类的C代码,没有手工编码的汇编.
任何代码或 idea 都将不胜感激.所需操作包括:
- 创建具有特定大小的缓冲区.
- 放在 tail 上.
- 从头上拿开.
- 把计数还给我.
- 删除缓冲区.