当我宣布我的队列为
typedef boost::lockfree::queue<MyMessage, boost::lockfree::fixed_sized<true>> MessageQueue
我尝试将队列用作多生产者单消费者队列,即从多个线程向其发布消息并轮询队列以获取来自单个线程的消息,消费者线程被锁定。没有任何进展。
但是当我不使用固定大小属性时,即不指定模板参数fixed_sized<true>
时,队列工作正常。但在这种情况下,队列实际上执行了内存分配/释放,这违背了使用无锁队列的目的。
所以我的问题是“如果使用属性设置 boost::lockfree::queue 是否会成为单生产者单消费者队列fixed_sized<true>
?”
我需要使用一些不同的推送/弹出方法吗?
我想要一个不进行内存分配释放的 MPMC 队列。如果 boost 不提供这个,还有其他我可以使用的队列吗?
提前致谢,