反应器类型的操作
Posted 莫嗔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反应器类型的操作相关的知识,希望对你有一定的参考价值。
有的时候程序必须依赖第三方库来完成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。
以上是关于反应器类型的操作的主要内容,如果未能解决你的问题,请参考以下文章
使用多个(最新)第 3 方反应库反应“未捕获的不变违规:元素类型无效”