boost::lockfree::spsc_queue and boost::asio

boost::lockfree::spsc_queue and boost::asio

本文关键字:boost and asio queue spsc lockfree      更新时间:2023-10-16

我想从boost::asio::async_read呼叫直接接收到boost::lockfree:spsc_queue(或者,或者,boost::circular_buffer(。看起来我需要编写一个包装器才能使spsc_queue成为MutableBuffer.

任何人都可以分享一些关于这是否可能以及如何实现这一目标的指导吗?

非常感谢

使用 asio 时,每个接收缓冲区必须是连续的。

由于boost::circular_buffer不是连续的,因此用作字节缓冲区相当不方便。不过,您仍然可以将其作为 2 个具有分散聚集 I/O 的缓冲区呈现给asio

用于 I/O 的高效且方便的循环缓冲区是映射两次的内存页区域,它们之间没有任何填充。这样,您可以使用一个read系统调用读取循环缓冲区,而无需使用分散-收集 I/O,也不必在解析/读取其内容时处理缓冲区不连续性。