《C++并发编程实战》内容简介与阅读建议

获取这本书 暂无已核验电子书资源
下载
分类
科技技术
出版年份
2015
译者
周全/梁娟娟/宋真真/许敏
出版社
人民邮电出版社
页数
360 页
语言
中文
豆瓣评分
★ 6.0

《C++并发编程实战》内容简介

《C++并发编程实战》是一本基于C++11新标准的并发和多线程编程深度指南。内容包括从std::thread、std::mutex、std::future和std::async等基础类的使用,到内存模型和原子操作、基于锁和无锁数据结构的构建,再扩展到并行算法、线程管理,最后还介绍了多线程代码的测试工作。本书的附录部分还对C++11新语言特性中与多线程相关的项目进行了简要的介绍,并提供了C++11线程库的完整参考。

《C++并发编程实战》书籍信息摘要

《C++并发编程实战》内容简介与阅读建议,作者 AnthonyWilliams,科技技术,2015年。获取前建议核对作者、出版社、年份、ISBN、版本和正版渠道。相关主题:C++、编程、计算机类。

《C++并发编程实战》适合哪些读者?

适合希望系统学习技术概念、实践方法、工具使用和行业知识的读者。 评分 6.0 可作为选书参考。

获取建议

《C++并发编程实战》怎么获取更合适?

优先确认版本和阅读目的;下载区只展示已核验的公版、授权、开放许可或官方试读资源。

下载

暂无已核验电子书资源;本站不展示未授权完整文件。

下载

版本

优先选择作者、译者、出版社、出版年份和 ISBN 信息明确的版本;经典作品可优先选择校注、导读或权威出版社版本。

目录

  1. 第1章 你好,C++并发世界
  2. 1.1 什么是并发
  3. 1.1.1 计算机系统中的并发
  4. 1.1.2 并发的途径
  5. 1.2 为什么使用并发
  6. 1.2.1 为了划分关注点而使用并发
  7. 1.2.2 为了性能而使用并发
  8. 1.2.3 什么时候不使用并发
展开全部(共 170 章节)
  1. 1.3 在C++中使用并发和多线程
  2. 1.3.1 C++多线程历程
  3. 1.3.2 新标准中的并发支持
  4. 1.3.3 C++线程库的效率
  5. 1.3.4 平台相关的工具
  6. 1.4 开始入门
  7. 1.5 小结
  8. 第2章 管理线程
  9. 2.1 基本线程管理
  10. 2.1.1 启动线程
  11. 2.1.2 等待线程完成
  12. 2.1.3 在异常环境下的等待
  13. 2.1.4 在后台运行线程
  14. 2.2 传递参数给线程函数
  15. 2.3 转移线程的所有权
  16. 2.4 在运行时选择线程数量
  17. 2.5 标识线程
  18. 2.6 小结
  19. 第3章 在线程间共享数据
  20. 3.1 线程之间共享数据的问题
  21. 3.1.1 竞争条件
  22. 3.1.2 避免有问题的竞争条件
  23. 3.2 用互斥元保护共享数据
  24. 3.2.1 使用C++中的互斥元
  25. 3.2.2 为保护共享数据精心组织代码
  26. 3.2.3 发现接口中固有的竞争条件
  27. 3.2.4 死锁:问题和解决方案
  28. 3.2.5 避免死锁的进一步指南
  29. 3.2.6 用std::unique_lock灵活锁定
  30. 3.2.7 在作用域之间转移锁的所有权
  31. 3.2.8 锁定在恰当的粒度
  32. 3.3 用于共享数据保护的替代工具
  33. 3.3.1 在初始化时保护共享数据
  34. 3.3.2 保护很少更新的数据结构
  35. 3.3.3 递归锁
  36. 3.4 小结
  37. 第4章 同步并发操作
  38. 4.1 等待事件或其他条件
  39. 4.1.1 用条件变量等待条件
  40. 4.1.2 使用条件变量建立一个线程安全队列
  41. 4.2 使用future等待一次性事件
  42. 4.2.1 从后台任务中返回值
  43. 4.2.2 将任务与future相关联
  44. 4.2.3 生成(std::)promise
  45. 4.2.4 为future保存异常
  46. 4.2.5 等待自多个线程
  47. 4.3 有时间限制的等待
  48. 4.3.1 时钟
  49. 4.3.2 时间段
  50. 4.3.3 时间点
  51. 4.3.4 接受超时的函数
  52. 4.4 使用操作同步来简化代码
  53. 4.4.1 带有future的函数式编程
  54. 4.4.2 具有消息传递的同步操作
  55. 4.5 小结
  56. 第5章 C++内存模型和原子
  57. 类型上操作
  58. 5.1 内存模型基础
  59. 5.1.1 对象和内存位置
  60. 5.1.2 对象、内存位置以及并发
  61. 5.1.3 修改顺序
  62. 5.2 C++中的原子操作及类型
  63. 5.2.1 标准原子类型
  64. 5.2.2 std::atomic_flag上的操作
  65. 5.2.3 基于std::atomic的操作
  66. 5.2.4 std::atomic上的操作:指针算术运算
  67. 5.2.5 标准原子整型的操作
  68. 5.2.6 std::atomic<>初级类模板
  69. 5.2.7 原子操作的自由函数
  70. 5.3 同步操作和强制顺序
  71. 5.3.1 synchronizes-with关系
  72. 5.3.2 happens-before关系
  73. 5.3.3 原子操作的内存顺序
  74. 5.3.4 释放序列和synchronizes-with
  75. 5.3.5 屏障
  76. 5.3.6 用原子操作排序非原子操作
  77. 5.4 小结
  78. 第6章 设计基于锁的并发数据结构
  79. 6.1 为并发设计的含义是什么
  80. 6.2 基于锁的并发数据结构
  81. 6.2.1 使用锁的线程安全栈
  82. 6.2.2 使用锁和条件变量的线程安全队列
  83. 6.2.3 使用细粒度锁和条件变量的线程安全队列
  84. 6.3 设计更复杂的基于锁的数据结构
  85. 6.3.1 编写一个使用锁的线程安全查找表
  86. 6.3.2 编写一个使用锁的线程安全链表
  87. 6.4 小结
  88. 第7章 设计无锁的并发数据结构
  89. 7.1 定义和结果
  90. 7.1.1 非阻塞数据结构的类型
  91. 7.1.2 无锁数据结构
  92. 7.1.3 无等待的数据结构
  93. 7.1.4 无锁数据结构的优点与缺点
  94. 7.2 无锁数据结构的例子
  95. 7.2.1 编写不用锁的线程安全栈
  96. 7.2.2 停止恼人的泄漏:在无锁数据结构中管理内存
  97. 7.2.3 用风险指针检测不能被回收的结点
  98. 7.2.4 使用引用计数检测结点
  99. 7.2.5 将内存模型应用至无锁栈
  100. 7.2.6 编写不用锁的线程安全队列
  101. 7.3 编写无锁数据结构的准则
  102. 7.3.1 准则:使用std::memory_order_seq_cst作为原型
  103. 7.3.2 准则:使用无锁内存回收模式
  104. 7.3.3 准则:当心ABA问题
  105. 7.3.4 准则:识别忙于等待的循环以及辅助其他线程
  106. 7.4 小结
  107. 第8章 设计并发代码
  108. 8.1 在线程间划分工作的技术
  109. 8.1.1 处理开始前在线程间划分数据
  110. 8.1.2 递归地划分数据
  111. 8.1.3 以任务类型划分工作
  112. 8.2 影响并发代码性能的因素
  113. 8.2.1 有多少个处理器
  114. 8.2.2 数据竞争和乒乓缓存
  115. 8.2.3 假共享
  116. 8.2.4 数据应该多紧密
  117. 8.2.5 过度订阅和过多的任务切换
  118. 8.3 为多线程性能设计数据结构
  119. 8.3.1 为复杂操作划分数组元素
  120. 8.3.2 其他数据结构中的数据访问方式
  121. 8.4 为并发设计时的额外考虑
  122. 8.4.1 并行算法中的异常安全
  123. 8.4.2 可扩展性和阿姆达尔定律
  124. 8.4.3 用多线程隐藏延迟
  125. 8.4.4 用并发提高响应性
  126. 8.5 在实践中设计并发代码
  127. 8.5.1 std::for_each的并行实现
  128. 8.5.2 std::find的并行实现
  129. 8.5.3 std::partial_sum的并行实现
  130. 8.6 总结
  131. 第9章 高级线程管理
  132. 9.1 线程池
  133. 9.1.1 最简单的线程池
  134. 9.1.2 等待提交给线程池的任务
  135. 9.1.3 等待其他任务的任务
  136. 9.1.4 避免工作队列上的竞争
  137. 9.1.5 工作窃取
  138. 9.2 中断线程
  139. 9.2.1 启动和中断另一个线程
  140. 9.2.2 检测一个线程是否被中断
  141. 9.2.3 中断等待条件变量
  142. 9.2.4 中断在std::condition_variable_ any上的等待
  143. 9.2.5 中断其他阻塞调用
  144. 9.2.6 处理中断
  145. 9.2.7 在应用退出时中断后台任务
  146. 9.3 总结
  147. 第10章 多线程应用的测试与调试
  148. 10.1 并发相关错误的类型
  149. 10.1.1 不必要的阻塞
  150. 10.1.2 竞争条件
  151. 10.2 定位并发相关的错误的技巧
  152. 10.2.1 审阅代码以定位潜在的错误
  153. 10.2.2 通过测试定位并发相关的错误
  154. 10.2.3 可测试性设计
  155. 10.2.4 多线程测试技术
  156. 10.2.5 构建多线程的测试代码
  157. 10.2.6 测试多线程代码的性能
  158. 10.3 总结
  159. 附录A 附录A C++11部分
  160. 语言特性简明
  161. 参考
  162. 附录B 并发类库

常见问题

《C++并发编程实战》适合谁读?

适合希望系统学习技术概念、实践方法、工具使用和行业知识的读者。 评分 6.0 可作为选书参考。

《C++并发编程实战》阅读难度高吗?

建议先看简介、目录、作者和相关书籍,再判断是否适合当前阶段阅读。

《C++并发编程实战》纸质书值得买吗?

当前暂未接入已核验的纸质书购买链接,建议通过出版社、京东、当当等正版渠道核对版本后购买。

《C++并发编程实战》哪个版本更适合?

优先选择作者、译者、出版社、出版年份和 ISBN 信息清楚的版本;经典作品可优先选择校注、导读或权威出版社版本。

在哪里可以合法获取《C++并发编程实战》?

当前没有确认授权的电子书下载资源,也暂未接入已核验购买链接;商业出版物不提供未授权下载,建议通过出版社、京东、当当或官方电子书平台核对获取。

如何继续查找《C++并发编程实战》相关书籍?

可以进入 AnthonyWilliams 作者页查看其他作品,也可以通过分类、标签、排行榜、人工推荐和“读完这本还可以读”继续发现相近主题。

手机扫码下载

使用手机扫描二维码

扫码后会直接打开下载链接。

电子书下载二维码

手机端点击下载会直接跳转,无需扫码。