反应器类型的操作

有的时候程序必须依赖第三方库来完成I/O操作,鉴于这种情况,Boost::Asio提供了一个null_buffers 类型可以同时完成读和写操作,null_buffers 直到执行I/O操作的对象就绪才返回。
下面是一个执行非阻塞的读操作的例子
ip::tcp::socket socket(my_io_service);
...
ip::tcp::socket::non_blocking nb(true);
socket.io_control(nb);
...
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));
  }
}
  
  
  
这些操作支持任意平台上的socket。
原文地址:https://www.cnblogs.com/learn-my-life/p/5272188.html