Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost-asio缓冲区延迟分配_C++_Boost_Boost Asio - Fatal编程技术网

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以来已被弃用: