Linux多线程服务端编程 使用muduo C++网络库 PDF 高清电子书 免费下载 完整版 在线阅读- 高飞网
Linux多线程服务端编程 使用muduo C++网络库

Linux多线程服务端编程 使用muduo C++网络库

陈硕
C C++ 多线程 Linux 网络
浏览人数:21
读者:                           ...
  《Linux多线程服务端编程 使用muduoC++网络库》主要讲述采用现代C++在x86-64Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即oneloopperthread。这是在Linux下以native语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的服务端网络应用程序。本书以muduo网络库为例,讲解这种编程模型的使用方法及注意事项。
  《Linux多线程服务端编程 使用muduoC++网络库》的宗旨是贵精不贵多。掌握两种基本的同步原语就可以满足各种多线程同步的功能需求,还能写出更易用的同步设施。掌握一种进程间通信方式和一种多线程网络编程模型就足以应对日常开发任务,编写运行于公司内网环境的分布式服务系统。

第1 部分 C++ 多线程系统编程   
第1 章 线程安全的对象生命期管理   
1.1 当析构函数遇到多线程   
1.2 对象的创建很简单.   
1.3 销毁太难   
1.4 线程安全的Observer 有多难.   
1.5 原始指针有何不妥.   
1.6 神器shared_ptr/weak_ptr   
1.7 插曲:系统地避免各种指针错误.   
1.8 应用到Observer 上   
1.9 再论shared_ptr 的线程安全.   
1.10 shared_ptr 技术与陷阱   
1.11 对象池.   
1.12 替代方案   
1.13 心得与小结.   
1.14 Observer 之谬.   
第2 章 线程同步精要   
2.1 互斥器(mutex) .   
2.2 条件变量(condition variable) .   
2.3 不要用读写锁和信号量   
2.4 封装MutexLock、MutexLockGuard、Condition   
2.5 线程安全的Singleton 实现   
2.6 sleep(3) 不是同步原语   
2.7 归纳与总结.   
2.8 借shared_ptr 实现copy-on-write   
第3 章 多线程服务器的适用场合与常用编程模型   
3.1 进程与线程.   
3.2 单线程服务器的常用编程模型   
3.3 多线程服务器的常用编程模型   
3.4 进程间通信只用TCP .   
3.5 多线程服务器的适用场合.   
3.6 “多线程服务器的适用场合”例释与答疑   
第4 章 C++ 多线程系统编程精要   
4.1 基本线程原语的选用.   
4.2 C/C++ 系统库的线程安全性.   
4.3 Linux 上的线程标识   
4.4 线程的创建与销毁的守则.   
4.5 善用__thread 关键字.   
4.6 多线程与IO   
4.7 用RAII 包装文件描述符.   
4.8 RAII 与fork() .   
4.9 多线程与fork() .   
4.10 多线程与signal   
4.11 Linux 新增系统调用的启示   
第5 章 高效的多线程日志   
5.1 功能需求   
5.2 性能需求   
5.3 多线程异步日志   
5.4 其他方案   
第2 部分 muduo 网络库   
第6 章 muduo 网络库简介   
6.1 由来.   
6.2 安装.   
6.3 目录结构   
6.4 使用教程   
6.5 性能评测   
6.6 详解muduo 多线程模型.   
第7 章 muduo 编程示例   
7.1 五个简单TCP 示例   
7.2 文件传输   
7.3 Boost.Asio 的聊天服务器.   
7.4 muduo Buffer 类的设计与使用.   
7.5 一种自动反射消息类型的Google Protobuf 网络传输方案   
7.6 在muduo 中实现Protobuf 编解码器与消息分发器   
7.7 限制服务器的最大并发连接数   
7.8 定时器.   
7.9 测量两台机器的网络延迟和时间差.   
7.10 用timing wheel 踢掉空闲连接   
7.11 简单的消息广播服务.   
7.12 “串并转换”连接服务器及其自动化测试   
7.13 socks4a 代理服务器   
7.14 短址服务   
7.15 与其他库集成.   
第8 章 muduo 网络库设计与实现   
8.0 什么都不做的EventLoop .   
8.1 Reactor 的关键结构   
8.2 TimerQueue 定时器   
8.3 EventLoop::runInLoop() 函数   
8.4 实现TCP 网络库   
8.5 TcpServer 接受新连接   
8.6 TcpConnection 断开连接.   
8.7 Buffer 读取数据   
8.8 TcpConnection 发送数据.   
8.9 完善TcpConnection   
8.10 多线程TcpServer .   
8.11 Connector .   
8.12 TcpClient .   
8.13 epoll   
8.14 测试程序一览.   
第3 部分 工程实践经验谈   
第9 章 分布式系统工程实践   
9.1 我们在技术浪潮中的位置.   
9.2 分布式系统的可靠性浅说.   
9.3 分布式系统中心跳协议的设计   
9.4 分布式系统中的进程标识.   
9.5 构建易于维护的分布式程序.   
9.6 为系统演化做准备.   
9.7 分布式程序的自动化回归测试   
9.8 分布式系统部署、监控与进程管理的几重境界.   
第10 章 C++ 编译链接模型精要   
10.1 C 语言的编译模型及其成因.   
10.2 C++ 的编译模型   
10.3 C++ 链接(linking) .   
10.4 工程项目中头文件的使用规则   
10.5 工程项目中库文件的组织原则   
第11 章 反思C++ 面向对象与虚函数   
11.1 朴实的C++ 设计   
11.2 程序库的二进制兼容性   
11.3 避免使用虚函数作为库的接口   
11.4 动态库接口的推荐做法   
11.5 以boost::function 和boost::bind 取代虚函数.   
11.6 iostream 的用途与局限   
11.7 值语义与数据抽象.   
第12 章 C++ 经验谈   
12.1 用异或来交换变量是错误的.   
12.2 不要重载全局::operator new()   
12.3 带符号整数的除法与余数.   
12.4 在单元测试中mock 系统调用   
12.5 慎用匿名namespace .   
12.6 采用有利于版本管理的代码格式.   
12.7 再探std::string .   
12.8 用STL algorithm 轻松解决几道算法面试题   
第4 部分 附录   
附录A 谈一谈网络编程学习经验   
附录B 从《C++ Primer(第4 版)》入手学习C++   
附录C 关于Boost 的看法   
附录D 关于TCP 并发连接的几个思考题与试验   
看过本书的人还看过