boost asio 在linux下的proactor异步执行流程分析(二)

上文说到operation这个类很神奇,这里就直接看源码了,他其实是一个typedef 定义,typedef task_io_service_operation operation;看下 task_io_service_operation实现就知道,他其实就是用来调用回调函数用的,最重要的操作就是在构造函数里面传递进来的回调函数,当调用complete 的 时候执行回调函数,这里重点说下他的子类,这里直说最重要的两个子类:epoll_reactor::descriptor_state : operation 和reactor_op::operation

其中reactor_op 又是所有io操作函数的父类,举个例子:

class reactive_socket_accept_op_base : public reactor_op。

这里重点说下operation子类的两个回调函数,用于io操作的 perform函数和用于执行用户回调函数的 complete函数,先来看下各个回调函数的初始化:

epoll_reactor::descriptor_state 就是 当有fd就绪的时候,就会调用上文中说过的 base_implementation_type里面的 reactor_data_ 成员的 complete函数进行处理

在linux下其实就是epoll_reactor::descriptor_state,那就看下这个类的构造函数:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值