【发布时间】:2011-10-02 01:06:51
【问题描述】:
我正在寻找一种单生产者、单消费者 FIFO 实现,它的执行速度比正常的 lock-write-unlock-signal / waitForSignal-lock-read-unlock 的东西要快。我正在寻找用 C 或 C++ 编写的大多数 POSIX 操作系统(特定于 x86 很好)支持的东西。
我不想传递比指针更大的东西。
我不一定喜欢无锁的想法,但我确实想要一些快速且正确的东西。我读到的一篇关于这个主题的论文提到了一种看起来很有趣的双队列方法,但从那时起我就再也找不到更多的相关信息了。
从我目前所做的研究来看,0mq(据说它的 inproc:// 方案使用了无锁结构)看起来是最有吸引力的选择。话虽如此,我想确定在我走这条路之前我没有错过任何东西。
另一种选择可能涉及使用 POSIX 消息队列,但这对于线程 线程通信来说似乎相当慢;这是真的吗?
Any single-consumer single-producer lock free queue implementation in C? 似乎相关,但接受的答案实际上并没有像“过早优化不好”那样枚举现有库。
【问题讨论】:
-
过早优化不好。
-
偶然发现stackoverflow.com/questions/1164023/…,这似乎是重复的(尽管是旧的)。 liblfds.org 看起来很有趣。
标签: c++ performance producer-consumer