数据结构
本章介绍 LibXR 中用于任务调度、数据通信、资源管理等场景的通用数据结构。
特点
- 接口与平台无关。
- 容量在构造时确定。
SPSCQueue、MPMCQueue、Stack在构造时分配内部存储;Queue、ObjectPool可使用调用方提供的存储,DoubleBuffer只使用调用方提供的存储;List、LockFreeList、RBTree的节点由调用方持有。构造之后的读写不再分配内存。 Stack、List、RBTree使用互斥锁,不能在中断中使用;SPSCQueue、LockFreeList为无锁结构;MPMCQueue支持多生产者多消费者并发访问。
目录
- Queue(普通 FIFO 队列)
- SPSCQueue(单生产者单消费者无锁队列)
- MPMCQueue(多生产者多消费者有界队列)
- SlotPool(消息槽池)
- Stack(栈)
- List(链表)
- LockFreeList(无锁链表)
- ObjectPool(RAII 对象池)
- LatestSnapshot(最新值邮箱)
- RBTree(红黑树)
- DoubleBuffer(双缓冲区)
更多使用方式、性能差异与适用场景见各页面。