C++ boost-asio缓冲区延迟分配
异步操作 现在我传递预分配的字节缓冲区,例如:C++ boost-asio缓冲区延迟分配,c++,boost,boost-asio,C++,Boost,Boost Asio,异步操作 现在我传递预分配的字节缓冲区,例如: s.async_receive_from( boost::asio::buffer( preallocated_pointer, preallocated_size ), _remote_endpoint, boost::bind(...) ); 是否可以对此调用和其他调用进行延迟分配?延迟分配,或者,可以使用来完成空缓冲区可用于获得Boost.Asio内的反应堆式操作。这对于与第三方库集成、使用共享内存池等非常有
s.async_receive_from(
boost::asio::buffer( preallocated_pointer, preallocated_size ),
_remote_endpoint,
boost::bind(...)
);
是否可以对此调用和其他调用进行延迟分配?延迟分配,或者,可以使用来完成<代码>空缓冲区可用于获得Boost.Asio内的反应堆式操作。这对于与第三方库集成、使用共享内存池等非常有用。Boost.Asio提供了一些信息和以下示例代码:
ip::tcp::socket socket(my_io_service);
...
socket.non_blocking(true);
...
socket.async_read_some(null_buffers(), read_handler);
...
void read_handler(boost::system::error_code ec)
{
if (!ec)
{
std::vector<char> buf(socket.available());
socket.read_some(buffer(buf));
}
}
ip::tcp::socket套接字(我的io服务);
...
插座。非阻塞(真);
...
socket.async\u read\u some(null\u buffers(),read\u handler);
...
无效读取处理程序(boost::system::error\u code ec)
{
如果(!ec)
{
std::vector buf(socket.available());
socket.read_some(buffer(buf));
}
}
为什么你指的是惰性分配?答案很好-我自己也可以使用:)这个答案非常有用。谢谢。null\u缓冲区
自Boost 1.66.0以来已被弃用: