c++ - 如何使 boost::lockfree::queue 动态调整大小

标签 c++ boost

boost::lockfree::queue 的文档提到 push 可以在需要时分配更多空间。然而,我终其一生都无法弄清楚如何实例化这样一个队列,而且我找不到它的例子。 boost 网站上的所有示例都是固定容量的。

这是我正在查看的文档: http://www.boost.org/doc/libs/1_54_0/doc/html/boost/lockfree/queue.html

最佳答案

队列的默认大小是可变的。这由 typename ...Options 模板参数控制。

此外,还有一个错误,即使队列大小可变,队列也需要静态设置的容量。这可以通过使用采用初始容量的构造函数来避免。

可变大小的队列可以实例化为:

boost::lockfree::queue<T> newQueue(0);
// or equivalently:
boost::lockfree::queue<T, boost::lockfree::fixed_sized<false> > newQueue(0);

固定大小的队列必须将 fixed_sized 选项显式设置为 true 或使用 boost::lockfree::capacity 选项提供大小.

请参阅您链接到的文档开头附近的政策部分。

关于c++ - 如何使 boost::lockfree::queue 动态调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22891888/

相关文章:

c++ - C++常量放在哪里?在单独/共享的头文件(main.h)文件中?

c++ - 在 OS X 上设置语言环境崩溃

c++ - 如何使用 boost::filesystem "normalize"路径名?

c++ - boost::locale::to_lower 抛出 bad_cast 异常

c++ - Boost::thread 的瞬时中断

c# - 如何从 C# 代码调用非托管 dll 中的函数?

c++ - 输入一个值后跳过一些代码并退出程序

c++ - 是否有可能以这样一种方式实现一个类,即可以像 POD 一样对其进行值初始化

C++ Boost.asio Ping

c++ - boost::transform_iterator 和 boost::bind