我正在寻找符合这些要求的无锁设计:
- 单个写入器写入结构,单个读取器从该结构读取(该结构已经存在并且对于同时读/写是安全的)
- 但有时,结构需要由 writer 更改,然后初始化、切换并写入新结构(相同类型但具有新内容)
- 并且在下次阅读器读取时,它切换到这个新结构(如果写入器多次切换到一个新的无锁结构,阅读器丢弃这些结构,忽略它们的数据)。
- 必须重用这些结构,即在写/读/切换操作期间不允许堆内存分配/释放,用于RT 目的。
我目前已经实现了一个包含这些结构的多个实例的环形缓冲区;但是这个实现的问题是,当编写者使用了环形缓冲区中存在的所有结构时,就没有更多的地方可以改变结构了......但是环形缓冲区的其余部分包含一些不必读取的数据由读者使用,但作者不能重复使用。因此,环形缓冲区不适合此目的。
任何关于无锁设计的想法(名称或伪实现) ?感谢您考虑过这个问题。