我使用Boost的无锁队列作为生产者-消费者队列。我希望每个使用者线程在队列为空时阻塞,当队列中有更多数据时醒来,或者任何生产者终止。但是Boost似乎没有提供阻塞的pop,只提供立即返回的pop。
消费者应如何等待数据可用?
发布于 2015-04-12 05:28:11
您正在寻找一个有趣的操作:您希望对一个无锁队列执行阻塞操作,这与您所使用的无锁队列正好相反。
使用互斥和条件变量使用普通阻塞队列。这很容易,而且这是一种更标准的方法。
实际上,在许多情况下,您会为无锁支付性能损失,因为您保证队列不包含任何锁,即使在最坏的情况下也是如此。
This question涵盖了这两种方法的许多优点和缺点。
https://stackoverflow.com/questions/29586230
复制相似问题