我们想知道在给定时间点队列中的元素数量。 我们正在插入和弹出对象,我们想知道队列缓冲区中的对象数量。 是否有任何内置功能? 或者通过其他方式获得它?
http://www.boost.org/doc/libs/1_53_0/doc/html/boost/lockfree/spsc_queue.html
最佳答案
您无法可靠地获得尺寸,因为它会引发竞争条件。出于同样的原因,您不会找到 empty()
方法:当该方法返回一个值时,它将变得无关紧要,因为它可能已经改变。
有时无锁容器提供“unreliable_size()”方法(用于统计/日志记录)
这里的特殊情况是 SPSC 假设单个生产者和消费者:
size_type read_available() const;
可以从 spsc_queue 中弹出的可用元素数
size_type write_available() const;
获取写入空间写入元素
请注意,这些仅在各自的消费者/生产者线程中使用时有效。
关于c++ - 如何获得 boost SPSC 队列的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570282/