展开全部

主编推荐语

《Linux C++多线程服务端编程》探讨在Linux平台下编写高效C++多线程服务端代码的策略与技巧。

内容简介

本书主要讨论如何基于Linux平台编写C++程序——代码位于服务端,并且深处多线程、并发处理的现代开发场景。《Linux C++ 多线程服务端编程》描述了使用标准接口包括使用Linux独有的高级接口时,在功能和性能之间如何进行权衡取舍的策略。该书同样也是一本内行人士编写灵活、高效代码的学习指南。作为国内从事C++开发的黑客级人物,本书作者不仅阐释了系统接口应该如何工作,还介绍了它们实际上是如何工作的,以及怎样安全、有效地使用它们。可以说,本书包含了帮助你在任何层面编写更佳代码的实用技巧。

目录

  • 版权信息
  • 前言
  • 术语与排版范例
  • 代码
  • 联系方式
  • 第1部分 C++多线程系统编程
  • 第1章 线程安全的对象生命期管理
  • 1.1 当析构函数遇到多线程
  • 1.2 对象的创建很简单
  • 1.3 销毁太难
  • 1.4 线程安全的Obschmerver有多难
  • 1.5 原始指针有何不妥
  • 1.6 神器shared_ptr/weak_ptr
  • 1.7 插曲:系统地避免各种指针错误
  • 1.8 应用到Obschmerver上
  • 1.9 再论shared_ptr的线程安全
  • 1.10 shared_ptr技术与陷阱
  • 1.11 对象池
  • 1.12 替代方案
  • 1.13 心得与小结
  • 1.14 Obschmerver之谬
  • 第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 一种自动反射消息类型的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 谈一谈网络编程学习经验
  • A.1 网络编程的一些“胡思乱想”
  • A.2 三本必看的书
  • 附录B 从《C++Primer(第4版)》入手学习C++
  • B.1 为什么要学习C++
  • B.2 学习C++只需要读一本大部头
  • B.3 继续前进
  • B.4 评注版使用说明
  • 附录C 关于Boost的看法
  • 附录D 关于TCP并发连接的几个思考题与试验
  • 参考文献
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。