发布一个基于 Reactor 模式的 C++ 网络库
陈硕 (giantchen_AT_gmail)
Blog.csdn.net/Solstice
2010 Aug 30
本文主要介绍 muduo 网络库的使用。其设计与实现将有另文讲解。
目录
由来
半年前我写了一篇《学之者生,用之者死——ACE历史与简评》,其中提到“我心目中理想的网络库”的样子:
- 线程安全,支持多核多线程
- 不考虑可移植性,不跨平台,只支持 Linux,不支持 Windows。
- 在不增加复杂度的前提下可以支持 FreeBSD/Darwin,方便将来用 Mac 作为开发用机,但不为它做性能优化。也就是说 IO multiplexing 使用 poll 和 epoll。
- 主要支持 x86-64,兼顾 IA32
- 不支持 UDP,只支持 TCP
- 不支持 IPv6,只支持 IPv4
- 不考虑广域网应用,只考虑局域网
- 只支持一种使用模式:non-blocking IO + one event loop per thread,不考虑阻塞 IO
- API 简单易用,只暴露具体类和标准库里的类,不使用 non-trivial templates,也不使用虚函数
- 只满足常用需求的 90%,不面面俱到,必要的时候以 app 来适应 lib
- 只做 library,不做成 framework
- 争取全部代码在 5000 行以内(不含测试)
- 以上条件都满足时,可以考虑搭配 Google Protocol Buffers RPC
在想清楚这些目标之后,我开始第三次尝试编写自己的 C++ 网络库。与前两次不同,这次我一开始就想好了库的名字,叫 muduo (木铎),并在 Google code 上创建了项目: http://code.google.c