## 并發(fā)的驅(qū)動力
并發(fā)編程復興的主要驅(qū)動力來自于“多核危機”。
## 并發(fā)與并行
并發(fā)程序含有多個邏輯上的獨立執(zhí)行塊,它們可以獨立地并行執(zhí)行秸应,也可以串行執(zhí)行。
并發(fā)是同一時間應(yīng)對(dealing with)多件事情的能力桑谍;
并行是同一時間動手做(doing)多件事情的能力祸挪。
并發(fā)程序的執(zhí)行通常是不確定的,它會隨著事件時序的改變而給出不同的結(jié)果贿条。對于真正的并發(fā)程序,不確定性是其與生俱來且伴隨始終的屬性胧辽。與之相反公黑,并行程序可能是確定。
傳統(tǒng)的“線程與鎖”模型并沒有顯式支持并行人断。
##單核CPU級別的并行
單核在位級和指令級兩個層次上都能夠并行地使用這些晶體管資源朝蜘。
##? 單核CPU級別的并行 位級(bit-level)并行
對于兩個32位數(shù)的加法,8位計算機必須進行多次8位計算蝉绷,而32位計算機可以一步完成,即并行地處理32位數(shù)的4字節(jié)熔吗。
## 單核CPU級別的并行 指令級(instruction-level)并行
現(xiàn)代CPU的并行度很高,盡管處理器內(nèi)部的并行度很高桅狠,但是經(jīng)過精心設(shè)計,從外部看上去所有處理都像是串行的咨堤。
## 單核CPU級別的并行 數(shù)據(jù)級(data)并行
數(shù)據(jù)級并行(也稱為“單指令多數(shù)據(jù)”漩符,SIMD)架構(gòu),可以并行地在大量數(shù)據(jù)上施加同一操作嗜暴。
##多核CPU級別的并行 共享內(nèi)存的多處理器
每個處理器都能訪問整個內(nèi)存,處理器之間的通信主要通過內(nèi)存進行
##多核CPU級別的并行 分布式內(nèi)存的多處理器
對于分布式內(nèi)存的多處理器系統(tǒng)萎战,每個處理器都有自己的內(nèi)存蚂维,處理器之間的通信主要通過網(wǎng)絡(luò)進行
通過內(nèi)存通信比通過網(wǎng)絡(luò)通信更簡單更快速虫啥,所以用共享內(nèi)存編程往往更容易奄妨。