这个系列围绕 Boost.Asio 展开:先用一篇概览建立设计思想,再沿着「入门 → 基本原理 → 核心类 → 实战 → 对比 → 多线程」的主线逐步深入,最后附带两篇 Boost 工具库的番外。全系列 10 篇,按发文时间顺序读即是推荐阅读顺序。
第一阶段:建立全局认识
先搞清 Boost.Asio 是什么、为什么这样设计,再拿一本书的导览建立知识地图:
- Boost.Asio 概览:跨平台网络库与 Proactor 模式:为什么 Asio 在 Linux 上用 epoll 模拟 Proactor,Reactor 与 Proactor 的取舍
- Boost.Asio C++ 网络编程:实战精要:John Torjo 书的中文精要,全书知识地图
第二阶段:核心机制
进入 Asio 的两个基石——基本原理与最核心的 io_service:
- Boost.Asio 入门:编译依赖、第一个同步/异步例子
- Boost.Asio 基本原理:socket、读写、缓冲区、错误处理的完整机制
- 深入理解 Boost.Asio 的 io_service:run()、run_one()、poll() 的运行机制与工作模式
第三阶段:实战与进阶
把机制串成完整的应用:客户端、服务端、同步异步选型、多线程:
- Boost.Asio:客户端和服务端:同步与异步两种实现的完整代码
- Boost.Asio:同步 vs 异步:两种模型的流程、适用场景与心智负担
- Boost.Asio 多线程模型:io_service pool、thread pool 与 strand 竞态处理
第四阶段:工具库番外
两篇与网络无关但常用的 Boost 库:
- Boost property_tree:配置与数据解析:JSON/INI/XML 的解析与生成
- Boost string_algo:split() 字符串切分:split() 的四个参数与使用方式
怎么读这个系列
- 没写过网络程序:按顺序读,概览和入门是后面一切的地基
- 用过 Asio 但一知半解:直接读「深入理解 io_service」和「多线程模型」,这两篇解决 run() 与并发的心智问题
- 做技术选型:「同步 vs 异步」一篇专门帮你权衡两种模型的成本