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

前几天在看代码的时候上网上网找了关于异步proactor 执行流程的分析,在windows下面到有几篇不错的博文,但是在linux下面几乎没有很详细的介绍,现在看完了,写一下自己在看的过程中的疑惑和自己的分析,希望对大家学习有帮助。

在看asio之前先提几个问题:

1 异步的执行流程到底是怎样的?从用户发起操作到执行自己的完成回调函数,中间发生了什么?

2 proactor模式到底是怎么实现的呢?

3 都说run函数会在任务数为0的时候会退出循环,到底是怎么控制的?

4 run在多线程里执行的时候,到底是怎么随机分配任务的? 

带着这几个问题,我们进入源码的世界,哈哈,此时边喝啤酒边写。首先先来看几个类型的定义,只有搞清楚每一个类型在linux下面到底是什么具体的类型,才好跟踪代码,下面以tcp 异步accept调用来进行分析:在应用层代码里最上层的类为

typedef basic_socket_acceptor<tcp> acceptor;

basic_socket_acceptor 继承自 basic_io_object,在basic_io_object是一个模板类,传递给他的模板参数就是

socket_acceptor_service<Protocol>, 继续看basic_io_object这个模板类,它里面有最重要的两个成员,后面的所有操作几乎都要用到这两个成员:

typedef IoObjectService service_type;

typedef typename service_type::implementation_type implementation_type;

我们知道传递进来的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值