C++ muduo网络库 学习笔记之:Reactor模式
muduo之Reactor(反应堆)模式
最近在看muduo的reactor模式,从中学到了很多东西,我打算把我学到的知识整理一下分享出来,对自己来说也是一种知识总结,对他人来说也是一种学习指南吧。
Reactor模式总述
我打算从后往前,从整体到细节的方式来讲述这一部分的内容,所以第一节就讲一下Reactor概述。
反应堆设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。
在muduo中只要使用到了这样几个类:EventLoop,Poller,Channel,具体细节暂时不讲,先看一下总体的流程图
首先创建一个Eventloop,在里面执行事件循环,每一个Eventloop通过scpoed_ptr来间接持有Poller。Poller是IO multiplexing(多路IO转接)的封装,可实现poll(2)和epoll(4)两种IO multiplexing机制。Poller调用poll(2)获得当前活动的IO事件,把它填入到Channel中。Channel负责一个文件描述符(file description)的IO事件分发,把不同事件分发给不同的回调函数。
以上就是Muduo中Reactor模式的大概了。