注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Rust并發(fā)編程實(shí)戰(zhàn)

Rust并發(fā)編程實(shí)戰(zhàn)

Rust并發(fā)編程實(shí)戰(zhàn)

定 價(jià):¥88.00

作 者: [荷]瑪拉·博斯(Mara Bos) 著 李好 李輝 譯
出版社: 中國(guó)電力出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787519891909 出版時(shí)間: 2024-10-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  通過(guò)本書(shū),你將學(xué)到:Rust的類(lèi)型系統(tǒng)和正確的并發(fā)編程如何非常好地配合。有關(guān)互斥鎖、條件變量、原子操作和內(nèi)存順序的一切。在英特爾和ARM處理器上進(jìn)行原子操作時(shí)會(huì)發(fā)生什么情況。鎖是如何借助操作系統(tǒng)的支持來(lái)實(shí)現(xiàn)的。如何編寫(xiě)包含并發(fā)、原子操作和鎖的正確代碼。如何正確構(gòu)建自己的鎖和同步原語(yǔ)。

作者簡(jiǎn)介

  Mara Bos維護(hù)著Rust標(biāo)準(zhǔn)庫(kù),并用Rust構(gòu)建實(shí)時(shí)控制系統(tǒng)。作為Rust庫(kù)團(tuán)隊(duì)的負(fù)責(zé)人,她熟知該語(yǔ)言和標(biāo)準(zhǔn)庫(kù)的方方面面。此外,作為Fusion Engineering 的創(chuàng)始人兼首席技術(shù)官,她多年來(lái)一直致力于并發(fā)實(shí)時(shí)系統(tǒng)的工作。維護(hù)Rust 生態(tài)系統(tǒng)中最z常用的庫(kù),并每天致力于安全相關(guān)系統(tǒng)的工作,使她具備了豐富的實(shí)踐經(jīng)驗(yàn),既能理解理論又能將其付諸實(shí)踐。

圖書(shū)目錄


序 1
前言 3
第1 章 Rust 并發(fā)基礎(chǔ) 9
1.1 Rust 中的線程 .10
1.2 作用域線程 14
1.3 共享所有權(quán)和引用計(jì)數(shù) .17
1.3.1 靜態(tài)對(duì)象 .17
1.3.2 泄漏 17
1.3.3 引用計(jì)數(shù) .18
1.4 借用和數(shù)據(jù)競(jìng)爭(zhēng) 21
1.5 內(nèi)部可變性 23
1.5.1 Cell .24
1.5.2 RefCell .25
1.5.3 Mutex 和RwLock 26
1.5.4 原子類(lèi)型 .26
1.5.5 UnsafeCell 27
1.6 線程安全性:Send 和Sync .27
1.7 鎖:互斥鎖和讀寫(xiě)鎖 30
1.7.1 Rust 的互斥鎖 30
1.7.2 鎖中毒 33
1.7.3 讀寫(xiě)鎖 35
1.8 等待:線程停放與條件變量 37
1.8.1 線程停放 .37
1.8.2 條件變量 .40
1.9 總結(jié) .42
第2 章 原子性 45
2.1 原子加載和存儲(chǔ)操作 46
2.1.1 示例:停止標(biāo)志 47
2.1.2 示例:進(jìn)度報(bào)告 48
2.1.3 示例:延遲初始化 .50
2.2 獲取—修改操作 52
2.2.1 示例:多線程進(jìn)度報(bào)告 53
2.2.2 示例:統(tǒng)計(jì) 55
2.2.3 示例:ID 分配 .57
2.3 比較—交換操作 59
2.3.1 示例:無(wú)溢出的ID 分配 .61
2.3.2 示例:延遲一次性初始化 62
2.4 總結(jié) .64
第3 章 內(nèi)存順序 67
3.1 重排與優(yōu)化 67
3.2 內(nèi)存模型69
3.3 happens-before 關(guān)系 70
3.4 寬松順序73
3.5 釋放和獲取順序 76
3.5.1 例子:鎖定 80
3.5.2 示例:通過(guò)間接方式實(shí)現(xiàn)延遲初始化 .82
3.6 消費(fèi)順序85
3.7 順序一致性順序 87
3.8 柵欄 .88
3.9 常見(jiàn)誤解93
3.10 總結(jié) 95
第4 章 構(gòu)建我們自己的自旋鎖 97
4.1 最簡(jiǎn)實(shí)現(xiàn)98
4.2 不安全的自旋鎖 .100
4.3 使用鎖衛(wèi)士的安全接口 103
4.4 總結(jié) 106
第5 章 構(gòu)建我們自己的通道 109
5.1 一個(gè)基于互斥鎖的簡(jiǎn)單通道 .109
5.2 一個(gè)不安全的一次性通道 . 111
5.3 通過(guò)運(yùn)行時(shí)檢查提高安全性 . 115
5.4 通過(guò)類(lèi)型系統(tǒng)提高安全性 .120
5.5 通過(guò)借用避免分配 .125
5.6 阻塞 129
5.7 總結(jié) 132
第6 章 構(gòu)建我們自己的Arc 135
6.1 基礎(chǔ)引用計(jì)數(shù) 135
6.1.1 測(cè)測(cè)它 140
6.1.2 修改 .141
6.2 弱指針 .143
6.3 優(yōu)化 150
6.4 總結(jié) 158
第7 章 理解處理器 161
7.1 處理器指令 162
7.1.1 加載和存儲(chǔ) .166
7.1.2 Read-Modify-Write 操作 168
7.1.3 Load-Linked 指令和Store-Conditional 指令 172
7.2 緩存 177
7.2.1 緩存一致性 .178
7.2.2 對(duì)性能的影響 .180
7.3 重排 186
7.4 內(nèi)存順序.188
7.4.1 x86-64:強(qiáng)內(nèi)存序 189
7.4.2 ARM64:弱內(nèi)存序 .191
7.4.3 一個(gè)實(shí)驗(yàn) 194
7.4.4 內(nèi)存屏障 196
7.5 總結(jié) 198
第8 章 操作系統(tǒng)原語(yǔ) 201
8.1 與內(nèi)核交互 201
8.2 POSIX .203
8.3 Linux 207
8.3.1 Futex 208
8.3.2 Futex 操作 211
8.3.3 優(yōu)先級(jí)繼承Futex 操作 .215
8.4 macOS .216
8.5 Windows .217
8.5.1 重量級(jí)內(nèi)核對(duì)象 218
8.5.2 輕量級(jí)對(duì)象 .218
8.5.3 基于地址的等待 220
8.6 總結(jié) 221
第9 章 構(gòu)建我們自己的鎖 223
9.1 Mutex 225
9.1.1 避免系統(tǒng)調(diào)用 .229
9.1.2 進(jìn)一步優(yōu)化 .231
9.1.3 基準(zhǔn)測(cè)試 234
9.2 條件變量.237
9.2.1 避免系統(tǒng)調(diào)用 .243
9.2.2 避免錯(cuò)誤喚醒 .245
9.3 讀寫(xiě)鎖 .248
9.3.1 避免忙循環(huán)的寫(xiě)入者252
9.3.2 避免寫(xiě)入者饑餓 255
9.4 總結(jié) 258
第10 章 想法和靈感 . 261
10.1 信號(hào)量 261
10.2 RCU 262
10.3 無(wú)鎖鏈表 264
10.4 隊(duì)列鎖 265
10.5 停車(chē)位鎖 266
10.6 序列鎖 267
10.7 教學(xué)材料 268

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)