## 并發(fā)的驅(qū)動力
并發(fā)編程復(fù)興的主要驅(qū)動力來自于“多核危機(jī)”。
## 并發(fā)與并行
并發(fā)程序含有多個(gè)邏輯上的獨(dú)立執(zhí)行塊,它們可以獨(dú)立地并行執(zhí)行,也可以串行執(zhí)行。
并發(fā)是同一時(shí)間應(yīng)對(dealing with)多件事情的能力;
并行是同一時(shí)間動手做(doing)多件事情的能力。
并發(fā)程序的執(zhí)行通常是不確定的,它會隨著事件時(shí)序的改變而給出不同的結(jié)果。對于真正的并發(fā)程序,不確定性是其與生俱來且伴隨始終的屬性。與之相反,并行程序可能是確定。
傳統(tǒng)的“線程與鎖”模型并沒有顯式支持并行。
##單核CPU級別的并行
單核在位級和指令級兩個(gè)層次上都能夠并行地使用這些晶體管資源。
##? 單核CPU級別的并行 位級(bit-level)并行
對于兩個(gè)32位數(shù)的加法,8位計(jì)算機(jī)必須進(jìn)行多次8位計(jì)算,而32位計(jì)算機(jī)可以一步完成,即并行地處理32位數(shù)的4字節(jié)。
## 單核CPU級別的并行 指令級(instruction-level)并行
現(xiàn)代CPU的并行度很高,盡管處理器內(nèi)部的并行度很高,但是經(jīng)過精心設(shè)計(jì),從外部看上去所有處理都像是串行的。
## 單核CPU級別的并行 數(shù)據(jù)級(data)并行
數(shù)據(jù)級并行(也稱為“單指令多數(shù)據(jù)”,SIMD)架構(gòu),可以并行地在大量數(shù)據(jù)上施加同一操作。
##多核CPU級別的并行 共享內(nèi)存的多處理器
每個(gè)處理器都能訪問整個(gè)內(nèi)存,處理器之間的通信主要通過內(nèi)存進(jìn)行

##多核CPU級別的并行 分布式內(nèi)存的多處理器
對于分布式內(nèi)存的多處理器系統(tǒng),每個(gè)處理器都有自己的內(nèi)存,處理器之間的通信主要通過網(wǎng)絡(luò)進(jìn)行

通過內(nèi)存通信比通過網(wǎng)絡(luò)通信更簡單更快速,所以用共享內(nèi)存編程往往更容易。