C++ boost::lockfree::spsc_队列分配器最大大小?

C++ boost::lockfree::spsc_队列分配器最大大小?,c++,linux,multithreading,boost,fifo,C++,Linux,Multithreading,Boost,Fifo,我需要缓冲一堆传入的10GigE数据,以便稍后将其写入磁盘。按顺序这样做是一个问题,因为如果我没有足够快地为其提供服务,我正在读取的设备将溢出 在寻找解决方案时,我偶然发现了boost::lockfree::spsc_队列。特别是,我喜欢这样一个事实:我可以为队列预先分配内存,因为在push()过程中调整大小可能会导致速度减慢,从而导致溢出 然而,考虑到数据速率,我需要一个大的缓冲区。因此,我想知道我可以为队列分配的最大大小是多少(以项目和字节为单位)。我计划部署的系统有24GB可用空间,所以我

我需要缓冲一堆传入的10GigE数据,以便稍后将其写入磁盘。按顺序这样做是一个问题,因为如果我没有足够快地为其提供服务,我正在读取的设备将溢出

在寻找解决方案时,我偶然发现了boost::lockfree::spsc_队列。特别是,我喜欢这样一个事实:我可以为队列预先分配内存,因为在push()过程中调整大小可能会导致速度减慢,从而导致溢出

然而,考虑到数据速率,我需要一个大的缓冲区。因此,我想知道我可以为队列分配的最大大小是多少(以项目和字节为单位)。我计划部署的系统有24GB可用空间,所以我希望分配最多16GB的空间,以确保队列永远不会填满。最后一点需要注意的是,代码将驻留在Linux机器(x86-64体系结构)上,因此,如果需要任何内核参数来改变此大小,那么最好也知道这一点


提前感谢您的帮助。

在尝试队列之后,我能够(动态)分配一个巨大的队列。似乎没有限制

但是,静态地说,您受到了限制,在创建大型静态分配的缓冲区时,我收到了错误。不过,我没有充分利用它来找到确切的价值