Reactor反应器

有的程序想要使用第三方库,然后又想自己实现IO操作。为了满足这种需求,Aiso有一个无缓冲对象的类型以供读写操作。无缓冲对象的操作不会等到I/O对象“准备好了”才开始。

这里有个例子,展示了无阻塞的读取操作:

ip::tcp::socket socket(my_io_service);
...
socket.non_blocking(true);
...
socket.async_read_some(null_buffers(),read_handler);
...
void read_handler(asio::error_code ec)
{
    if(!ec)
    {
        std::vector<char> buf(socket.available);
        socket.read_some(buffer(buf));
    }
}

这些操作对所有平台的socket都适用,对于满足POSIX标记的流式对象也适用。

参见

null_buffers, basic_socket::non_blocking(), basic_socket::native_non_blocking(), nonblocking example.

results matching ""

    No results matching ""