异步同步,阻塞非阻塞,reactor/proactor
文章目录
- reactor和proactor区别
- 同步IO/异步IO区别
- 阻塞非阻塞
reactor和proactor区别
1.reactor
应用线程 内核| |注册事件 || ||<--事件就绪--|| |读/写数据 <----|
- proactor
应用线程 内核| |发起异步 I/O || || |--> 内核完成 I/O| |--> 回调触发v v做其他工作 处理结果
特性 | Reactor | Proactor |
---|---|---|
I/O 执行 | 应用线程主动执行 | 内核/线程池执行 |
事件通知 | 就绪通知(ready) | 完成通知(completion) |
回调执行 | 原线程调用 | 原线程或其他线程 |
阻塞情况 | 可能阻塞在读/写 | 不阻塞,完全异步 |
💡 一句话记忆:
Reactor = “事件就绪我去做”;
Proactor = “我交给系统做,完成了通知我”。
同步IO/异步IO区别
同步 I/O = 发起就阻塞,等待完成;
异步 I/O = 发起立即返回,完成由回调/事件通知处理。
阻塞非阻塞
同步 = 发起 I/O 后自己去做/等待结果
异步 = 发起 I/O 后不管,等系统通知
阻塞 = 线程等,不能干别的
非阻塞 = 线程不等,可继续做其他事