会员   密码 您忘记密码了吗?
1,574,159 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > 多處理器編程的藝術(原書第2版)
多處理器編程的藝術(原書第2版)
上一张
下一张
prev next

多處理器編程的藝術(原書第2版)

作者: (美)莫里斯·赫利希,尼爾·沙維特,維克多·盧昌科,邁克爾·斯皮爾
出版社: 機械工業出版社
出版日期: 2022-05-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT894.00
市场价格: RM160.72
本店售价: RM143.04
促销价: RM141.43
剩余时间: 请稍等, 正在载入中...
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書由G?del獎得主領銜撰寫,主要討論共用存儲通信方式下的多處理器併發程式設計。首先介紹基本原理,分析非同步併發環境中的可計算問題,包括相關度量標準和方法。然後開展應用實踐,側重於併發程式的性能分析。每一章討論一種特定的併發資料結構、程式設計模式或演算法技巧。第2版對資料並行、事務性程式設計、存儲管理等內容做了重點更新和擴充,並採用C++語言重構相關示例,更加關注底層機制。
 
本書適合作為高等院校電腦相關專業的課程教材,也適合作為業界技術人員的參考書籍。


作者介紹


目錄

譯者序
前言
第1章導論1
1.1共用物件和同步2
1.2一則寓言故事4
1.2.1互斥協定的特性6
1.2.2故事的寓意7
1.3生產者-消費者問題7
1.4讀者-寫者問題9
1.5並行化的嚴酷現實10
1.6並行程式設計11
1.7章節注釋12
1.8練習題12

第一部分基本原理
第2章互斥16
2.1時間和事件16
2.2臨界區16
2.3雙執行緒解決方案19
2.3.1LockOne類19
2.3.2LockTwo類20
2.3.3彼得森鎖21
2.4關於鎖死的說明22
2.5過濾鎖23
2.6公平性25
2.7蘭波特的麵包房鎖演算法25
2.8有界時間戳記27
2.9存儲單元數量的下界29
2.10章節注釋32
2.11練習題32
第3章併發對象36
3.1併發性和正確性36
3.2串列物件38
3.3順序一致性39
3.3.1順序一致性與即時次序41
3.3.2順序一致性是非阻塞的41
3.3.3可組合性42
3.4線性一致性43
3.4.1可線性化點43
3.4.2線性一致性和順序一致性43
3.5靜態一致性44
3.5.1靜態一致性的特性44
3.6形式化定義44
3.6.1歷史記錄45
3.6.2線性一致性46
3.6.3線性一致性滿足可組合性47
3.6.4線性一致性是非阻塞的47
3.7記憶體一致性模型47
3.8演進條件48
3.8.1無等待性48
3.8.2無鎖性49
3.8.3無阻塞性49
3.8.4阻塞演進條件50
3.8.5演進條件的特徵描述50
3.9評析51
3.10章節注釋52
3.11練習題52
第4章共用記憶體基礎57
4.1寄存器空間58
4.2寄存器構造62
4.2.1MRSW安全寄存器63
4.2.2MRSW常規布林寄存器63
4.2.3MRSW常規M-值寄存器64
4.2.4SRSW原子寄存器65
4.2.5MRSW原子寄存器67
4.2.6MRMW原子寄存器69
4.3原子快照71
4.3.1無阻塞快照71
4.3.2無等待快照73
4.3.3正確性證明75
4.4章節注釋76
4.5練習題77
第5章同步操作原語的相對能力80
5.1共識數80
5.1.1狀態和價81
5.2原子寄存器82
5.3共識性協議84
5.4FIFO佇列85
5.5多重賦值對象87
5.6讀取-修改-寫入操作90
5.7Common2RMW操作91
5.8compareAndSet操作92
5.9章節注釋93
5.10練習題94
第6章共識性的通用性99
6.1引言99
6.2通用性99
6.3無鎖的通用構造100
6.4無等待的通用構造103
6.5章節注釋107
6.6練習題108

第二部分應用實踐
第7章自旋鎖和爭用112
7.1實際問題的研究112
7.2易失性欄位和原子物件114
7.3測試-設置鎖115
7.4指數退避演算法117
7.5佇列鎖119
7.5.1基於陣列的鎖119
7.5.2CLH佇列鎖121
7.5.3MCS佇列鎖123
7.6時限佇列鎖125
7.7層級鎖127
7.7.1層級退避鎖128
7.7.2同類群組鎖129
7.7.3同類群組鎖的實現130
7.8複合鎖132
7.9執行緒單獨運行的快速路徑137
7.10鎖的選擇說明138
7.11章節注釋138
7.12練習題139
第8章管程和阻塞同步141
8.1引言141
8.2管程鎖和條件141
8.2.1條件142
8.2.2喚醒丟失的問題145
8.3讀取-寫入鎖146
8.3.1簡單的讀取-寫入鎖146
8.3.2公平的讀取-寫入鎖148
8.4可重入鎖150
8.5信號量151
8.6章節注釋151
8.7練習題152
第9章鏈表:鎖的作用155
9.1引言155
9.2基於鏈表的集合156
9.3併發推理157
9.4粗細微性同步159
9.5細細微性同步160
9.6樂觀同步163
9.7惰性同步167
9.8非阻塞同步170
9.9討論175
9.10章節注釋176
9.11練習題176
第10章佇列、記憶體管理和ABA問題178
10.1引言178
10.2佇列179
10.3有界部分佇列179
10.4無界完全佇列183
10.5無鎖的無界佇列184
10.6記憶體回收和ABA問題187
10.6.1簡單的同步佇列190
10.7雙重資料結構192
10.8章節注釋194
10.9練習題194
第11章棧和消除196
11.1引言196
11.2無鎖的無界棧196
11.3消除198
11.4消除退避棧199
11.4.1無鎖交換機199
11.4.2消除陣列201
11.5章節注釋204
11.6練習題204
第12章計數、排序和分散式協作208
12.1引言208
12.2共用計數208
12.3軟體組合209
12.3.1概述209
12.3.2一個擴展的實例215
12.3.3性能和健壯性216
12.4靜態一致池和計數器217
12.5計數網路217
12.5.1可計數網路218
12.5.2雙調計數網路219
12.5.3性能和流水線227
12.6衍射樹228
12.7並行排序231
12.8排序網路231
12.8.1設計一個排序網路232
12.9樣本排序234
12.10分散式協作235
12.11章節注釋236
12.12練習題237
第13章併發雜湊和固有並行240
13.1引言240
13.2封閉地址雜湊集241
13.2.1粗細微性雜湊集243
13.2.2帶狀雜湊集244
13.2.3可細化的雜湊集246
13.3無鎖的雜湊集249
13.3.1遞迴有序拆分249
13.3.2BucketList類252
13.3.3LockFreeHashSet類253
13.4開放地址雜湊集255
13.4.1布穀鳥雜湊演算法255
13.4.2併發布穀鳥演算法257
13.4.3帶狀併發布穀鳥雜湊演算法261
13.4.4可細化的併發布穀鳥雜湊演算法262
13.5章節注釋265
13.6練習題265
第14章跳躍鏈表和平衡查找266
14.1引言266
14.2順序跳躍鏈表266
14.3基於鎖的併發跳躍鏈表268
14.3.1概述268
14.3.2演算法269
14.4無鎖的併發跳躍鏈表275
14.4.1概述275
14.4.2演算法277
14.5併發跳躍鏈表283
14.6章節注釋284
14.7練習題284
第15章優先順序佇列286
15.1引言286
15.1.1併發優先順序佇列286
15.2基於陣列的有界優先順序佇列286
15.3基於樹的有界優先順序佇列287
15.4基於堆的無界優先順序佇列290
15.4.1順序堆290
15.4.2併發堆292
15.5基於跳躍鏈表的無界優先順序佇列297
15.6章節注釋299
15.7練習題300
第16章調度和工作分配302
16.1引言302
16.2並行化分析308
16.3多處理器的實際調度311
16.4工作分配312
16.4.1工作竊取312
16.4.2讓步和多道程序設計313
16.5工作竊取雙端佇列314
16.5.1有界工作竊取雙端佇列314
16.5.2無界工作竊取雙端佇列318
16.5.3工作交易321
16.6章節注釋322
16.7練習題323
第17章資料並行326
17.1MapReduce328
17.1.1MapReduce框架328
17.1.2基於MapReduce的Word-Count應用程式330
17.1.3基於MapReduce的KMeans應用程式331
17.1.4MapReduce的實現332
17.2流計算334
17.2.1基於流的WordCount應用程式335
17.2.2基於流的KMeans應用程式336
17.2.3實現聚合運算的並行化338
17.3章節注釋340
17.4練習題341
第18章屏障347
18.1引言347
18.2屏障的實現348
18.3語義反向屏障348
18.4組合樹屏障349
18.5靜態樹屏障352
18.6終止檢測屏障353
18.7章節注釋356
18.8練習題357
第19章樂觀主義和手動記憶體管理363
19.1從Java過渡到C++363
19.2樂觀主義和顯式回收364
19.3保護掛起的操作365
19.4用於管理記憶體的物件366
19.5遍歷鏈表367
19.6風險指針369
19.7基於週期的記憶體回收372
19.8章節注釋374
19.9練習題375
第20章事務性程式設計376
20.1併發程式設計面臨的挑戰376
20.1.1鎖的問題376
20.1.2明確預測的問題377
20.1.3非阻塞演算法的問題378
20.1.4可組合性問題379
20.1.5總結380
20.2事務性程式設計380
20.2.1事務性程式設計示例381
20.3事務性程式設計的硬體支援382
20.3.1硬體預測382
20.3.2基本快取一致性382
20.3.3事務快取一致性383
20.3.4硬體支援的局限性384
20.4事務性鎖消除384
20.4.1討論386
20.5事務性記憶體387
20.5.1運行時調度388
20.5.2顯式自我中止388
20.6軟體事務389
20.6.1使用所有權記錄的事務390
20.6.2基於值驗證的事務394
20.7硬體事務和軟體事務的有機結合396
20.8交易資料結構設計397
20.9章節注釋397
20.10練習題398

附錄A軟體基礎399
附錄B硬體基礎417
參考文獻4