资源详情

Rust并发编程实战

Rust并发编程实战-电子书下载


作者: Mara Bos
出版社: 中国电力出版社
原作名: Rust Atomics and Locks
译者: 李好
出版年: 2024-10
页数: 269
定价: 88
ISBN: 9787519891909

下载次数:103


本站推荐

Rust并发编程实战

下载地址

书籍资料

  • 内容简介
  • 作者介绍
  • 书籍目录

Rust编程语言非常适合并发编程,并且其生态系统中有许多库包含大量并发数据结构、锁等。但正确实现这些结构可能会很困难。即使在使用最广泛的库中,内存顺序错误也并不少见。 在这本非常实用的书中,Rust库团队负责人MaraBos帮助各个级别的Rust程序员清晰地理解底层并发性。你将学习有关原子操作和内存顺序的一切,以及它们如何与基本操作系统API结合使用来构建诸如互斥锁和条件变量之类的常见原语。完成后,你将牢固掌握Rust的内存模型、处理器以及操作系统是如何相互配合的。 通过本书,你将学到: Rust的类型系统和正确的并发编程如何非常好地配合。 有关互斥锁、条件变量、原子操作和内存顺序的一切。 在英特尔和ARM处理器上进行原子操作时会发生什么情况。 锁是如何借助操作系统的支持来实现的。 如何编写包含并发、原子操作和锁的正确代码。 如何正确构建自己的锁和同步原语。

Mara Bos maintains the Rust standard library and builds real-time control systems in Rust. As team lead of the Rust library team, she knows all the ins and outs of the language and the standard library. In addition, she has been working with concurrent real-time systems for years at the company she founded. Maintaining the most-used library in the Rust ecosystem and working daily on safety critical systems has given her the hands-on experience to both understand the theory and bring it to practice.

目录
序1
前言3
第1章Rust并发基础9
1.1Rust中的线程10
1.2作用域线程14
1.3共享所有权和引用计数17
1.3.1静态对象17
1.3.2泄漏17
1.3.3引用计数18
1.4借用和数据竞争21
1.5内部可变性23
1.5.1Cell24
1.5.2RefCell25
1.5.3Mutex和RwLock26
1.5.4原子类型26
1.5.5UnsafeCell27
1.6线程安全性:Send和Sync27
1.7锁:互斥锁和读写锁30
1.7.1Rust的互斥锁30
1.7.2锁中毒33
1.7.3读写锁35
1.8等待:线程停放与条件变量37
1.8.1线程停放37
1.8.2条件变量40
1.9总结42
第2章原子性45
2.1原子加载和存储操作46
2.1.1示例:停止标志47
2.1.2示例:进度报告48
2.1.3示例:延迟初始化50
2.2获取—

改操作52
2.2.1示例:多线程进度报告53
2.2.2示例:统计55
2.2.3示例:ID分配57
2.3比较—交换操作59
2.3.1示例:无溢出的ID分配61
2.3.2示例:延迟一次性初始化62
2.4总结64
第3章内存顺序67
3.1重排与优化67
3.2内存模型69
3.3happens-before关系70
3.4宽松顺序73
3.5释放和获取顺序76
3.5.1例子:锁定80
3.5.2示例:通过间接方式实现延迟初始化82
3.6消费顺序85
3.7顺序一致性顺序87
3.8栅栏88
3.9常见误解93
3.10总结95
第4章构建我们自己的自旋锁97
4.1最简实现98
4.2不安全的自旋锁100
4.3使用锁卫士的安全接口103
4.4总结106
第5章构建我们自己的通道109
5.1一个基于互斥锁的简单通道109
5.2一个不安全的一次性通道111
5.3通过运行时检查提高安全性115
5.4通过类型系统提高安全性120
5.5通过借用避免分配125
5.6阻塞129
5.7总结132
第6章构建我们自己的Arc135
6.1基础引用计数135
6.1.1测测它140
6.1.2修改141
6.2弱指针143
6.3优化150
6.4总结158
第7章理解处理器161
7.1处理器指令162
7.1.1加载和存储166
7.1.2Read-Modify-Write操作168
7.1.3Load-Linked指令和Store-Conditional指令172
7.2缓存177
7.2.1缓存一致性178
7.2.2对性能的影响180
7.3重排186
7.4内存顺序188
7.4.1x86-64:强内存序189
7.4.2ARM64:弱内存序191
7.4.3一个实验194
7.4.4内存屏障196
7.5总结198
第8章操作系统原语201
8.1与内核交互201
8.2POSIX203
8.3Linux207
8.3.1Futex208
8.3.2Futex操作211
8.3.3优先级继承Futex操作215
8.4macOS216
8.5Windows217
8.5.1重量级内核对象218
8.5.2轻量级对象218
8.5.3基于地址的等待220
8.6总结221
第9章构建我们自己的锁223
9.1Mutex225
9.1.1避免系统调用229
9.1.2进一步优化231
9.1.3基准测试234
9.2条件变量237
9.2.1避免系统调用243
9.2.2避免错误唤醒245
9.3读写锁248
9.3.1避免忙循环的写入者252
9.3.2避免写入者饥饿255
9.4总结258
第10章想法和灵感261
10.1信号量261
10.2RCU262
10.3无锁链表264
10.4队列锁265
10.5停车位锁266
10.6序列锁267
10.7教学材料268