c++ - 如何获得 boost SPSC 队列的大小?

标签 c++ c++11 boost queue size

我们想知道在给定时间点队列中的元素数量。 我们正在插入和弹出对象,我们想知道队列缓冲区中的对象数量。 是否有任何内置功能? 或者通过其他方式获得它?

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/

相关文章:

c++ - 另一种语言的 Tesseract setVariable 白名单

c++ - 小的重复算术与创建新变量

c++ - 在基类的构造函数中正确初始化 unique_ptr

c++ - boost ASIO async_read_some

c++ - 在嵌套结构中分配 const char* (c++)

c++ - 类之间复杂的循环依赖

c++ - 为什么没有std::protect?

boost - 在 Red Hat Linux 上安装 mapnik 失败

c++ - 将 boost::depth_first_search 与访客一起使用

c++ - 在类定义中使用 'this'