重写C++muduo库的梳理总结
上面只是一个反应堆模型,我们的是多个反应堆模型—one loop per thread 模型;
下面是一个多线程的Multiple Reactor模型:
- mainReactor就是我们代码中的mainloop(baseloop);
- subReactor就是subloop,是我们代码中的工作线程进行读写事件的处理,read是底层做的,decode是我们自己做的。compute和encode也是我们自己做的。从网络上read数据,然后从网络上send数据,这些是由muduo库帮我们做的。decode compute encode是我们用户在OnMessage处理的业务逻辑;
- 每一个线程都是一个独立的Reactor;
- 每一个loop对应一个线程,每一个线程都是一个独立的Reactor。
1、Channel、Poller、EPollPoller