Reactor风格的操作
有时,程序必须与希望自行执行I/O操作的第三方库集成。为此,Boost.Asio提供了可用于等待套接字准备好读取、准备好写入或出现挂起错误条件的同步和异步操作。
例如,要执行非阻塞读取,可以使用类似以下的代码:
ip::tcp::socket socket(my_io_context);
...
socket.non_blocking(true);
...
socket.async_wait(ip::tcp::socket::wait_read, read_handler);
...
void read_handler(boost::system::error_code ec)
{
if (!ec)
{
std::vector<char> buf(socket.available());
socket.read_some(buffer(buf));
}
}这些操作在所有平台的套接字上都得到支持,并且适用于POSIX面向流的描述符类。
Last updated