《C++并发编程实战》(第2版) 高清pdf 百度网盘 点击下载
内容简介 · · · · · ·
这是一本介绍C++并发和多线程编程的深度指南。本书从C++标准程序库的各种工具讲起,介绍线程管控、在线程间共享数据、并发操作的同步、C++内存模型和原子操作等内容。同时,本书还介绍基于锁的并发数据结构、无锁数据结构、并发代码,以及高级线程管理、并行算法函数、多线程应用的测试和除错。本书还通过附录及线上资源提供丰富的补充资料,以帮助读者更完整、细致地掌握C++并发编程的知识脉络。
本书适合需要深入了解C++多线程开发的读者,以及使用C++进行各类软件开发的开发人员、测试人员,还可以作为C++线程库的参考工具书。
作者简介 · · · · · ·
安东尼·威廉姆斯(Anthony Williams),C++开发者、顾问、培训师,英国标准协会C++标准组成员,拥有超过20年的C++开发经验,独立编写或合著了众多C++标准委员会文件,为C++11标准引入了线程库,实现了工具“just::thread Pro”(Just Software Solutions公司的产品),并持续致力于开发C++的新特性,以增强C++并发工具集的功能,这两者都遵循C++标准和提案。
目录 · · · · · ·
第1章 你好,C++并发世界 1
1.1 什么是并发 2
1.1.1 计算机系统中的并发 2
1.1.2 并发的方式 4
1.1.3 并发与并行 5
1.2 为什么使用并发技术 6
1.2.1 为分离关注点而并发 6
1.2.2 为性能而并发:任务并行和数据并行 7
1.2.3 什么时候避免并发 8
1.3 并发与C++多线程 9
1.3.1 C++多线程简史 9
1.3.2 新标准对并发的支持 10
1.3.3 C++14和C++17进一步
支持并发和并行 10
1.3.4 标准C++线程库的效率 10
1.3.5 平台专属的工具 12
1.4 启程上路 12
实例—“Hello Concurrent World” 12
1.5 小结 13
第2章 线程管控 15
2.1 线程的基本管控 15
2.1.1 发起线程 16
2.1.2 等待线程完成 19
2.1.3 在出现异常的情况下等待 19
2.1.4 在后台运行线程 21
2.2 向线程函数传递参数 23
2.3 移交线程归属权 26
2.4 在运行时选择线程数量 30
2.5 识别线程 33
2.6 小结 35
第3章 在线程间共享数据 37
3.1 线程间共享数据的问题 38
3.1.1 条件竞争 39
3.1.2 防止恶性条件竞争 40
3.2 用互斥保护共享数据 41
3.2.1 在C++中使用互斥 41
3.2.2 组织和编排代码以保护共享数据 43
3.2.3 发现接口固有的条件竞争 44
3.2.4 死锁:问题和解决方法 51
3.2.5 防范死锁的补充准则 53
3.2.6 运用std::unique_lock<>灵活加锁 60
3.2.7 在不同作用域之间转移互斥归属权 61
3.2.8 按适合的粒度加锁 62
3.3 保护共享数据的其他工具 64
3.3.1 在初始化过程中保护共享数据 65
3.3.2 保护甚少更新的数据结构 68
3.3.3 递归加锁 70
3.4 小结 71