1. muduo网络库核心架构解析
muduo是一个基于Reactor模式的高性能C++网络库,由陈硕开发,专为Linux多核环境设计。它采用one loop per thread的线程模型,能够高效处理大量并发连接。我们先来看一个典型的muduo服务器架构示意图:

1.1 MainReactor与SubReactor分工
MainReactor和SubReactor是muduo处理高并发的核心组件,它们各司其职:
| 维度 | MainReactor | SubReactor |
|---|---|---|
| 核心职责 | 仅处理新连接建立事件(OP_ACCEPT) | 处理已建立连接的I/O事件(OP_READ/OP_WRITE) |
| 线程数量 | 通常为单线程(高并发场景可能少量线程) | 多线程(通常为CPU核数的1~2倍) |
| 性能目标 | 快速响应连接请求,避免成为瓶颈 | 高效处理数据读写,避免I/O阻塞影响新连接接入 |
| 资源管理 | 监听全局ServerSocketChannel | 管理分配到的SocketChannel连接队列 |
MainReactor的设计意义在于解决连接接入的突发流量压力,而SubReactor则专注于解决数据传输的持续高并发压力。
1.2 select/epoll操作差异
MainReactor和SubReactor中的I/O复用操作有着本质区别:
MainReactor中的select/epoll:
- 监听事件类型:仅OP_ACCEPT(连接建立事件)
- 触发条件:客户端发起TCP握手(SYN包)时,内核通知就绪
- 后续动作:通过dispatch将新连接分配给SubReactor
SubReactor中的select/epoll:
- 监听事件类型:OP_READ(读就绪)和OP_WRITE(写就绪)
- 触发条件:已建立连接的Socket有数据到达内核缓冲区或可写
- 后续动作:调用对应的Handler处理数据,可能将计算任务提交至Worker线程池
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Reactor模型核心组件
muduo的Reactor模型包含以下关键组件:
- Event:事件(包含读/写/错误事件)
- Reactor:反应堆
- Demultiplex:多路事件分发器
- EventHandler:事件处理器
- EventLoop:subReactor(包含一个Poller事件分发器和多个Channel)

2.1 EventLoop线程模型
muduo采用"one loop per thread"的线程模型,每个EventLoop运行在独立的线程中。这种设计有三大优势:
- 线程隔离:避免多线程竞争
