首页 > 代码库 > reactor & proactor 笔记
reactor & proactor 笔记
1. 基本概念
1.1 同步/异步,针对应用程序和内核交互而言。
同步:进程触发IO操作等待或轮询查看IO操作是否完成;
异步:进程触发IO操作后仅需自身的处理,IO操作完成后会得到通知(异步的特点)
1.2 阻塞/非阻塞:针对进程访问数据
阻塞:调用数据访问函数后一直等待
非阻塞:调用数据访问函数后立即返回
同步阻塞IO:传统的IO方式,进程发起一个IO操作后等待其完成;
同步非阻塞IO:进程发起一个IO操作后返回做其他处理,但进程需要不断询问IO操作是否完成,如JAVA NIO
异步阻塞IO:进程发起IO后等待内核通知,但仍然阻塞如select函数
异步非阻塞IO:发起IO操作后立即返回,然后等待内核的IO操作通知,当前java无支持
因此阻塞非阻塞本质上只针对同步有意义。
2. reactor & proactor
2.1 reactor
1. 注册就绪时间和关联的事件处理器;
2. 事件分离器等待事件发生;
3. 当发生读就绪事件时,事件分离器调用相应的时间处理器;
2.2 proactor
1. 等待事件
2. 读数据,由proactor完成
3. 把已经准备好的数据给用户处理函数(用户代码)
4. 用户处理数据
备注:与reactor不同的是proactor关注的是读/写完成事件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。