单Reactor 单线程/进程
Reactor设计模式本质是基于事件驱动的。将对IO的处理转换为对事件的处理
IO操作通过非阻塞IO实现,IO就绪通过IO多路复用来完成
这里的select、accept、read、send是系统调用函数,dispatch和业务处理是需要完成的操作,其中dispatch是分发时间操作
接下来介绍【但Reactor单进程】这个方案
- Reactor对象通过epoll监听事件,收到事件后通过dispatch进行分发,具体分发给Acceptor对象进行处理还是Handler对象,要看具体收到的事件类型。
- 如果是建立连接的事件,则交由Acceptor对象进行处理,Acceptor对象 会通过accept方法获取连接,并创建一个Handler对象来处理后续响应事件
- 如果不是建立连接事件,则交由当前连接对应的Handler对象进行响应
- Handler对象通过read->业务处理->send的流程来完成完整的业务流程
Reactor模型运行机制
单Reactor 多线程/进程
多Reactor 多线程/进程
muduo采用的就是此模型,one loop per thread
在大体模型了解的前提下,接下来,我会就muduo库里的核心源码进行剖析,我已经大体学过一遍了,为了加深印象,和查漏补缺吧,我接下来会更新mduo的三大核心类。