Rust并发编程实战
Mara Bos
李好, 李辉 译
出版时间:2024年11月
页数:269
“这本书太棒了!它正是我想要在The Rustonomicon里涵盖的并发内容,但比我做梦都要好得多。在所有正确的地方都非常详尽。Mara写完这本书之后应该好好休息一下。”
——Aria Beingessner
The Rustonomicon的作者

Rust编程语言非常适合并发编程,并且其生态系统中有许多库包含大量并发数据结构、锁等。但正确实现这些结构可能会很困难。即使在使用最广泛的库中,内存顺序错误也并不少见。
在这本非常实用的书中,Rust库团队负责人Mara Bos帮助各个级别的Rust程序员清晰地理解底层并发性。你将学习有关原子操作和内存顺序的一切,以及它们如何与基本操作系统API结合使用来构建诸如互斥锁和条件变量之类的常见原语。完成后,你将牢固掌握Rust的内存模型、处理器以及操作系统是如何相互配合的。
通过本书,你将学到:
● Rust的类型系统和正确的并发编程如何非常好地配合。
● 有关互斥锁、条件变量、原子操作和内存顺序的一切。
● 在英特尔和 ARM 处理器上进行原子操作时会发生什么情况。
● 锁是如何借助操作系统的支持来实现的。
● 如何编写包含并发、原子操作和锁的正确代码。
● 如何正确构建自己的锁和同步原语。
  1. 前言
  2. 第1章 Rust并发基础
  3. 1.1 Rust中的线程
  4. 1.2 作用域线程
  5. 1.3 共享所有权和引用计数
  6. 1.3.1 静态对象
  7. 1.3.2 泄漏
  8. 1.3.3 引用计数
  9. 1.4 借用和数据竞争
  10. 1.5 内部可变性
  11. 1.5.1 Cell
  12. 1.5.2 RefCell
  13. 1.5.3 Mutex和RwLock
  14. 1.5.4 原子类型
  15. 1.5.5 UnsafeCell
  16. 1.6 线程安全性:Send和Sync
  17. 1.7 锁:互斥锁和读写锁
  18. 1.7.1 Rust的互斥锁
  19. 1.7.2 锁中毒
  20. 1.7.3 读写锁
  21. 1.8 等待:线程停放与条件变量
  22. 1.8.1 线程停放
  23. 1.8.2 条件变量
  24. 1.9 总结
  25. 第2章 原子性
  26. 2.1 原子加载和存储操作
  27. 2.1.1 示例:停止标志
  28. 2.1.2 示例:进度报告
  29. 2.1.3 示例:延迟初始化
  30. 2.2 获取—修改操作
  31. 2.2.1 示例:多线程进度报告
  32. 2.2.2 示例:统计
  33. 2.2.3 示例:ID分配
  34. 2.3 比较—交换操作
  35. 2.3.1 示例:无溢出的ID分配
  36. 2.3.2 示例:延迟一次性初始化
  37. 2.4 总结
  38. 第3章 内存顺序
  39. 3.1 重排与优化
  40. 3.2 内存模型
  41. 3.3 happens-before关系
  42. 3.4 宽松顺序
  43. 3.5 释放和获取顺序
  44. 3.5.1 例子:锁定
  45. 3.5.2 示例:通过间接方式实现延迟初始化
  46. 3.6 消费顺序
  47. 3.7 顺序一致性顺序
  48. 3.8 栅栏
  49. 3.9 常见误解
  50. 3.10 总结
  51. 第4章 构建我们自己的自旋锁
  52. 4.1 最简实现
  53. 4.2 不安全的自旋锁
  54. 4.3 使用锁卫士的安全接口
  55. 4.4 总结
  56. 第5章 构建我们自己的通道
  57. 5.1 一个基于互斥锁的简单通道
  58. 5.2 一个不安全的一次性通道
  59. 5.3 通过运行时检查提高安全性
  60. 5.4 通过类型系统提高安全性
  61. 5.5 通过借用避免分配
  62. 5.6 阻塞
  63. 5.7 总结
  64. 第6章 构建我们自己的Arc
  65. 6.1 基础引用计数
  66. 6.1.1 测测它
  67. 6.1.2 修改
  68. 6.2 弱指针
  69. 6.3 优化
  70. 6.4 总结
  71. 第7章 理解处理器
  72. 7.1 处理器指令
  73. 7.1.1 加载和存储
  74. 7.1.2 Read-Modify-Write操作
  75. 7.1.3 Load-Linked指令和Store-Conditional指令
  76. 7.2 缓存
  77. 7.2.1 缓存一致性
  78. 7.2.2 对性能的影响
  79. 7.3 重排
  80. 7.4 内存顺序
  81. 7.4.1 x86-64:强内存序
  82. 7.4.2 ARM64:弱内存序
  83. 7.4.3 一个实验
  84. 7.4.4 内存屏障
  85. 7.5 总结
  86. 第8章 操作系统原语
  87. 8.1 与内核交互
  88. 8.2 POSIX
  89. 8.3 Linux
  90. 8.3.1 Futex
  91. 8.3.2 Futex操作
  92. 8.3.3 优先级继承Futex操作
  93. 8.4 macOS
  94. 8.5 Windows
  95. 8.5.1 重量级内核对象
  96. 8.5.2 轻量级对象
  97. 8.5.3 基于地址的等待
  98. 8.6 总结
  99. 第9章 构建我们自己的锁
  100. 9.1 Mutex
  101. 9.1.1 避免系统调用
  102. 9.1.2 进一步优化
  103. 9.1.3 基准测试
  104. 9.2 条件变量
  105. 9.2.1 避免系统调用
  106. 9.2.2 避免错误唤醒
  107. 9.3 读写锁
  108. 9.3.1 避免忙循环的写入者
  109. 9.3.2 避免写入者饥饿
  110. 9.4 总结
  111. 第10章 想法和灵感
  112. 10.1 信号量
  113. 10.2 RCU
  114. 10.3 无锁链表
  115. 10.4 队列锁
  116. 10.5 停车位锁
  117. 10.6 序列锁
  118. 10.7 教学材料
书名:Rust并发编程实战
作者:Mara Bos
译者:李好, 李辉 译
国内出版社:中国电力出版社
出版时间:2024年11月
页数:269
书号:978-7-5198-9190-9
原版书书名:Rust Atomics and Locks
原版书出版商:O'Reilly Media
Mara Bos
 
Mara Bos维护着Rust标准库,并用Rust构建实时控制系统。作为Rust库团队的负责人,她熟知该语言和标准库的方方面面。此外,作为Fusion Engineering的创始人兼首席技术官,她多年来一直致力于并发实时系统的工作。维护Rust生态系统中最常用的库,并每天致力于安全相关系统的工作,使她具备了丰富的实践经验,既能理解理论又能将其付诸实践。
 
 
本书封面上的动物是一只科迪亚克熊(学名:Ursus arctos middendorffi)。这种棕熊物种是阿拉斯加科迪亚克群岛特有的。它们与其他熊隔离已经大约12000年。
科迪亚克熊是世界上最大的熊之一。雄性可以直立时高达10英尺,四肢着地时高达5英尺。雄性体重可达到1500磅,而雌性要小20%~30%。它们比黑熊更大,展示出更显著的肩峰、不太明显的耳朵和更长、更直的爪子。虽然它们属于棕熊类别,但不能通过毛色轻松辨认,其毛色范围从深褐色到浅金黄色不等。
科迪亚克群岛为熊提供了一片原始的风景。其温带森林长满郁郁葱葱的绿色植被,这得益于充足的降雨量。群岛上的冬季漫长而寒冷,随后是温和的夏季。熊们利用气候优势,根据当季食物进行饮食调整。春天和初夏它们以快速生长的草类为食。晚夏和初秋则吃浆果。从五月到九月间有三文鱼洄游,熊会用附近湖泊和溪流中产卵的太平洋三文鱼大快朵颐。它们适应能力强,并且容易受到未妥善存放的人类营地和住所处的垃圾及食物吸引。
科迪亚克熊曾经被大量狩猎以保护牲畜,但现在狩猎已经受到监管以保持种群的蓬勃发展。因此,无需担心科迪亚克熊的保育状态。
购买选项
定价:88.00元
书号:978-7-5198-9190-9
出版社:中国电力出版社