我正在寻找一种单生产者、单消费者 FIFO 实现,它的执行速度比正常的锁定-写入-解锁-信号/waitForSignal-lock-read-unlock 东西更快。我正在寻找用 C 或 C++ 编写的大多数 POSIX 操作系统(特定于 x86 很好)支持的东西。
我不想传递比指针大的任何东西。
我不一定喜欢无锁的想法,但我确实想要一些快速而正确的东西。我读到的一篇关于这个主题的论文提到了一种看起来很有趣的双队列方法,但从那时起我就找不到太多关于它的信息。
从我到目前为止所做的研究来看,0mq(据说它的 inproc:// 方案使用无锁结构)看起来是最有吸引力的选择。话虽如此,我想确保在走上这条路之前我没有错过任何东西。
另一种选择可能涉及使用 POSIX 消息队列,但这对于线程 <--> 线程通信来说似乎相当慢;这是真的?
任何单消费者单生产者无锁队列在 C 中的实现?似乎相关,但接受的答案实际上并没有像“过早优化是不好的”那样枚举现有库。