5种网络IO模型、Reactor、Proactor

网络IO模型包括:阻塞I/O、非阻塞I/O、I/O复用(select和poll)、信号驱动I/O(SIGNO)、异步I/O(Posix的aio_系列函数)

一、同步IO模型

1.1 阻塞I/O


1.2 非阻塞I/O


1.3 I/O复用(select和poll)


1.4 信号驱动I/O(SIGNO)


二、异步IO模型

2.1 异步I/O(Posix的aio_系列函数)


2.2 五种IO模型的比较


三、Reactor与Proactor

3.1 基本概念

      两种I/O多路复用模式:Reactor和Proactor。

     Reactor模式采用同步IO,Proactor采用异步IO。

     事件、事件处理器(回调函数)、事件分离器。 开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。

3.2 Reactor实现读

      1. 注册读就绪事件和相应的事件处理器;

      2. 事件分离器等待事件;

      3. 事件到来,激活分离器,分离器调用事件对应的处理器;

      4. 事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返回控制权。

3.3 Proactor实现读

      1. 处理器泛起异步读操作(注意:操作系统必须支持异步IO)。这种情况下,处理器无视IO就绪事件,它关注的是完成事件;

      2. 事件分离器等待操作完成事件;

      3. 在分离器等待过程中,操作系统利用并行的内核线程执行实际的读操作,并将结果数据存入用户自定义缓冲区,最后通知事件分离器读操作完成。

      4. 事件分离器呼唤处理器;

      5. 事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返回控制权。



参考资料:

      书籍:《UNIX网络编程》第6.3节 I/O模型

      网络编程Reactor与Proactor:http://www.cnblogs.com/dawen/archive/2011/05/18/2050358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值