我需要缓冲一堆传入的10 10GigE数据,以便以后可以将其写入磁盘。这样做是一个问题,因为我正在读取的设备将溢出,如果我没有足够快地服务它。
为了寻找解决方案,我偶然发现了boost::lockfree::spsc_queue。特别是,我喜欢这样一个事实:我可以为队列预先分配内存,因为在push()期间调整大小可能会导致速度减慢,从而导致溢出。
但是,考虑到数据速率,我需要一个较大的缓冲区。因此,我想知道我可以为队列分配的最大大小(无论是项的#还是字节)。我计划部署的系统有24 up可用,所以我希望分配多达16 up,以确保队列永远不会被填满。最后要注意的是,代码将驻留在Linux机器上(x86-64体系结构),所以如果有任何必要的内核参数来改变这个大小,这也是很好的了解。
提前谢谢你的帮助。
发布于 2015-01-23 03:51:53
在对队列进行了实验之后,我能够(动态地)分配一个大队列。似乎没有任何限制。
但是,静态地说,您是有限的,当我创建大型静态分配缓冲区时,我正在接收错误。不过,我并没有充分利用它来找到确切的价值。
https://stackoverflow.com/questions/26892232
复制相似问题