C++多核高级编程 封面

C++多核高级编程

暂无评分
章节数
14
丛书
Programmer to Programmer
ISBN
9787302222743

标签

内容简介

本书英文原名为 Professional Multicore Programming: Design and Implementation for C++ Developers,由 Wrox 出版,中文版由清华大学出版社于 2010 年引进,属“Programmer to Programmer”丛书系列。 全书围绕一个问题展开:当计算机厂商不再单纯提高主频,而是通过增加处理器核数来提升性能时,原有的顺序编程程序无法自动获得性能收益,开发者必须改写程序以利用多处理器、多线程架构。本书正是为帮助 C++ 开发者完成这一转变而写。 内容一方面讲“硬件与系统的现实”:介绍多核体系结构的基本构成,包括指令集、寄存器、缓存与主存、总线连接,并剖析当时四种有代表性的多核设计:AMD Multicore Opteron、Sun UltraSparc T1、IBM Cell Broadband Engine 与 Intel Core 2 Duo。另一方面讲“软件怎么写”:从顺序模型与并发模型的差别入手,梳理多核编程中的十类典型挑战,包括软件分解、任务间通信、共享资源并发访问、任务关系识别、资源争用控制、进程线程数量规划、调试与测试的可重现性等;随后讲解操作系统在多核编程中的角色与核心服务,进程与线程的创建、调度、优先级、资源限制,POSIX 接口的 C++ 封装方式,并发任务的通信与同步,并以 PADL、PBS 等设计方法以及 UML 建模来组织并发软件系统的设计,最后讨论并行程序的测试与逻辑容错。 书中的示例均基于 ISO 标准 C/C++ 编写,只使用 POSIX 兼容的系统调用或库,因此可在各类 POSIX 操作系统上移植,具有较好的跨平台性。全书配有四个附录,分别汇总 UML 并发设计、并发模型、线程管理的 POSIX 标准与进程管理的 POSIX 标准,便于查阅。

编辑推荐

这是一本定位清晰的“转轨型”技术书:它假设读者已经会用 C++ 写单线程程序,接下来要补上多核时代必须掌握的那一层能力。 它最值得称道的是“讲全链路”。市面上的并发书多从 API 讲起,直接教 pthread 或 OpenMP 怎么调用;本书却先从体系结构讲起,让读者理解缓存、总线、NUMA、核间共享资源为什么会直接决定程序性能与正确性,再谈进程、线程、同步与设计方法,最后落到测试与容错。读过之后,读者对“为什么这么写”往往比“怎么写”记得更牢。 第二个优点是大量使用“接口类”封装 POSIX 原语。原生 pthread 接口冗长、易错,作者用 C++ 的抽象与封装能力,把进程创建、线程管理、同步通信包成可复用的类,这既是并发编程技巧,也是一次高质量的 C++ 设计示范。 需要提醒的是时效性。书中剖析的 Opteron、UltraSparc T1、Cell BE、Core 2 Duo 都是 2006—2008 年前后的代表架构,示例基于 POSIX 而非 C++11 之后的 std::thread、std::atomic 与内存模型。因此它更适合作为理解并发原理与设计方法的基础读物,而不是最新的 API 手册。把这本书与一本现代 C++ 并发实践书搭配着读,效果最好。

适合谁读

适合

  • 已掌握 C++ 基础语法,准备第一次系统学习多线程与多进程编程的开发者
  • 正在把已有的单线程程序改造为并行版本,需要方法论而不只是 API 的中高级工程师
  • 希望理解缓存、NUMA、核间共享资源等体系结构因素如何影响程序性能的人
  • 从事高性能计算、嵌入式或系统软件,需要频繁使用 POSIX 进程与线程接口的从业者
  • 计算机专业学生,用于配合操作系统与并行计算课程做拓展阅读

不适合

  • 完全零编程基础的入门读者,书中直接使用 C++、POSIX 与 UML 术语
  • 只想查最新 C++ 并发 API(std::thread、std::atomic、协程)的读者,本书成书较早
  • 以 GPU/CUDA 或分布式集群为主要方向、希望直接学习异构并行框架的读者

阅读建议

  1. 先读第1—3章建立体系结构与并发挑战的整体框架,再进入第4—7章的进程、线程与同步实践。
  2. 动手复现书中示例并在多核机器上实测,观察不同线程数、锁粒度下的性能变化,比只读代码收获更大。
  3. 读第8—9章时配合 UML 活动图、类图梳理自己的项目,把 PADL/PBS 方法用到实际模块设计上。
  4. 把书中 POSIX 封装与 C++11 之后的 std::thread、std::atomic 对照阅读,理解标准演进解决了哪些老问题。
  5. 附录C、D 当作速查手册放在手边,写代码时随时对照进程与线程相关 POSIX 标准接口。

出版社简介

清华大学出版社 中国 · 成立于 1980 年

清华大学出版社创立于1980年,库内收录图书57种,涵盖科学科普、医学、健康、法律、哲学读物与社科等方向。代表图书既有菠萝(李治中)的《癌症·真相:医生也在读》《癌症·新知》等医学科普作品,也有《阳光是最好的防腐剂:全球反腐大要案快递》等法律类读物,以及七格的《脑洞大开的哲学简史》、刘云浩的《从互联到新工业革命》等。作者资源包括科普作家、医学研究者、中国人民大学反贪硕士班及高校学者,体现出兼顾学术性与大众阅读的出版特色。因公开资料有限,此处仅依据库内图书归纳其出版方向。

目录

  1. 第1章 新的体系结构
  2. 第2章 4种有影响的多核设计
  3. 第3章 多核编程的挑战
  4. 第4章 操作系统的任务
  5. 第5章 进程、C++接口类和谓词
  6. 第6章 多线程
  7. 第7章 并发任务的通信和同步
  8. 第8章 PADL和PBS:应用程序设计方法
  9. 第9章 对要求并发的软件系统进行建模
  10. 第10章 并行程序的测试和逻辑容错
  11. 附录A 并发设计使用的UML
  12. 附录B 并发模型
  13. 附录C 线程管理的POSIX标准
  14. 附录D 进程管理的POSIX标准

常见问题

这本书讲的是 C 还是 C++?
书名虽常被写作“C多核高级编程”,实际为《C++多核高级编程》,英文原名 Professional Multicore Programming: Design and Implementation for C++ Developers。全书用 ISO 标准 C/C++ 编写示例,但重点在 C++ 的封装与设计手法,示例底层调用 POSIX 接口。
需要什么前置基础才能读?
至少能熟练写 C++ 类与模板,了解进程、线程、内存、锁等操作系统基本概念。若没有这些基础,建议先补一门操作系统课程或读一本 C++ 入门书,否则第3章之后会较吃力。
书中的内容现在会不会过时?
部分会。书中剖析的 Opteron、UltraSparc T1、Cell BE、Core 2 Duo 是多年前的代表架构,示例也未使用 C++11 之后的标准并发库。但并发挑战、任务分解、同步设计、测试容错等方法论依然成立,建议与现代 C++ 并发书籍配合阅读。
书中代码能在 Windows 上运行吗?
示例仅使用 POSIX 兼容的系统调用或库,原生面向 Linux/Unix 环境。在 Windows 上需借助 WSL、Cygwin 或 MinGW 等 POSIX 兼容层,纯 Visual Studio 环境下部分示例无法直接编译。
这本书有配套源码吗?
有。原书 Wrox 官方页面提供示例源代码下载,可按英文原书 ISBN 978-0-470-28962-4 查找。中文版由清华大学出版社出版,其教学资源站点亦可能提供配套下载,可在出版社图书详情页确认。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

同类高分