《多核計算與程序設計》主要介紹適應于多核(或多處理器)計算機系統(tǒng)的算法和程序,共分為五個部分進行講解。第1部分介紹多核編程的基礎知識,包括多核編程常見問題、鎖競爭、加速比、負載均衡等基本概念,多線程退出算法、讀寫鎖、旋轉鎖、原子操作等多線程編程基礎知識,基于OpenMP標準的并行程序設計基礎等;第2部分介紹基礎的數據結構與算法,包括數組、鏈表、哈希表、二叉樹、AVL樹、復合二叉樹等基本數據結構,在鏈表那章中還講解了多線程并行遍歷的基本方法。第3部分介紹多核并行計算方面的基礎知識,并行編程包括常用的編程模式如分治模式、流水線模式、任務圖分解與調度模式、動態(tài)任務調度模式等,并行搜索包括順序搜索及終止檢測算法,并行最短路徑搜索等,并行排序包括并行快速排序、并行歸并排序、并行基數排序等,并行數值計算包括并行矩陣乘法、并行前綴和計算等方面的內容。本部分介紹的各種并行算法和程序中,重點介紹如何解決多核系統(tǒng)中的計算隨CPU核數的擴展性,CPU Cache偽共享方面的問題。第4部分介紹多核共享資源計算方面的內容,也是《多核計算與程序設計》中最重要的內容,講解了分布式計算設計模式如線程分組競爭模式、條件同步模式、批量私有化處理模式、數據本地化模式等。這部分中講解了《多核計算與程序設計》中幾個最重要的程序:分布式隊列中實現(xiàn)了自動讓每個線程帶有一個本地隊列、分布式查找中介紹了分段鎖的哈希表、動態(tài)負載平衡的分布式查找等,分布式內存管理則介紹了適應多核的內存管理方案,尤其是基于搶奪式的分布式內存管理算法,在分配和釋放共享內存時也幾乎不需要使用鎖,性能優(yōu)異。第5部分介紹任務分解與調度方面的知識,這也是《多核計算與程序設計》中最重要的內容,包括任務圖分解與調度的實現(xiàn)方法,動態(tài)任務分解與調度的實現(xiàn)方法等。其中還介紹了使用動態(tài)嵌套任務調度進行并行計算的方法,給出了用動態(tài)嵌套任務調度實現(xiàn)ParallelForo、并行快速排序、并行歸并的實例。最后一章中還介紹了Lock-Free編程(使用CAS原子操作進行編程)的基礎知識,如ABA問題,內存刪除問題等,并給出了一個Lock-Free的隊列的實現(xiàn)實例。