文章目录
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 后不管,等系统通知
阻塞 = 线程等,不能干别的
非阻塞 = 线程不等,可继续做其他事