Muduo库
✅ Muduo 库是干什么的?
Muduo 是一个 基于 C++11 的高性能事件驱动网络库,由 陈硕 开发,专为 Linux 平台下的高并发 TCP 服务器 设计。
📌 一句话总结
Muduo 是一个“帮你写高性能 TCP 服务器”的 C++ 框架,底层使用 epoll + 多线程 Reactor 模型,你只需要写业务逻辑,网络细节它全包了。
🎯 核心用途
场景 | 说明 |
---|---|
高并发服务器 | 聊天室、游戏网关、RPC 框架、物联网接入层 |
快速原型开发 | 用不到 100 行代码就能跑起一个 Echo 服务 |
教学/学习 | 理解 Reactor、线程池、非阻塞 IO 的极佳实例 |
⚙️ 架构特色
模块 | 作用 |
---|---|
EventLoop | 每个线程一个事件循环,处理 IO 事件 |
TcpServer | 自动管理监听、连接分发、线程池 |
TcpConnection | 封装一个客户端连接,提供 send/shutdown 等接口 |
Channel | 封装文件描述符 + 事件回调 |
Poller | 默认使用 epoll,支持 poll 作为备选 |
🧪 最小可运行示例(Echo 服务器)
#include <muduo/net/TcpServer.h>
#include <muduo/net/EventLoop.h>
#include <muduo/net/InetAddress.h>using namespace muduo;
using namespace muduo::net;void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp) {conn->send(buf->retrieveAllAsString()); // 回显
}int main() {EventLoop loop;TcpServer server(&loop, InetAddress(12345), "Echo");server.setMessageCallback(onMessage);server.setThreadNum(3); // 3 个 IO 线程server.start();loop.loop();
}
🧩 依赖与安装
Linux only,需 C++11 编译器
原版本依赖 Boost,社区已有 去除 Boost 的 C++11 移植版
安装(Ubuntu)
sudo apt install libmuduo-dev
✅ 总结一句话
如果你要在 Linux 下用 C++ 快速、稳定地写一个能扛 万级并发 的 TCP 服务器,Muduo 是最省心的选择之一。