還是先看看csapp上的解釋:并發(fā)(concurrency)是指一個(gè)通用上的概念,指一個(gè)同時(shí)具有多個(gè)活動(dòng)的系統(tǒng);并行(parallelism)指的是用并發(fā)使一個(gè)系統(tǒng)運(yùn)行得更快。
百度的解釋:并發(fā), 在
操作系統(tǒng)中,是指一個(gè)時(shí)間段中有幾個(gè)程序都處于已啟動(dòng)運(yùn)行到運(yùn)行完畢之間,且這幾個(gè)程序都是在同一個(gè)
處理機(jī)上運(yùn)行,但任一個(gè)時(shí)刻點(diǎn)上只有一個(gè)程序在處理機(jī)上運(yùn)行。也就是實(shí)際上,并發(fā)使指的在邏輯上,宏觀上,一個(gè)計(jì)算機(jī)能夠同時(shí)執(zhí)行多個(gè)任務(wù)多個(gè)程序,但是微觀上看,在同一個(gè)時(shí)刻,只有一個(gè)程序在運(yùn)行,但是由于處理器速度非常快的在幾個(gè)程序來回切換,讓我們覺得是好幾個(gè)程序同時(shí)在執(zhí)行。
而并行則是真正的讓計(jì)算機(jī)在物理上同時(shí)執(zhí)行多個(gè)活動(dòng)。
舉個(gè)例子,媽媽(cpu)在上午10點(diǎn)后開始做家務(wù)(程序),首先是收拾房間,收拾完房間后,開始洗衣服,洗完衣服后開始做午飯,那么到中午12點(diǎn),媽媽一共做了3件事情(程序),從宏觀上看,媽媽在一個(gè)上午的時(shí)間同時(shí)做了3個(gè)家務(wù),但是實(shí)際上這三件事并不是同時(shí)做的。而如果媽媽這么選擇做家務(wù):在收拾房間的同時(shí),把衣服扔到洗衣機(jī)里讓洗衣機(jī)洗著,同時(shí)又讓電飯鍋蒸著米飯,等媽媽收拾完房間的同時(shí)衣服也洗好了,飯也做熟了。三件事情等于是真正上的同時(shí)執(zhí)行的,這就是并行。很明顯我們會(huì)發(fā)現(xiàn),并行的速度要遠(yuǎn)遠(yuǎn)快于并發(fā)。
當(dāng)然并發(fā)和并行的具體實(shí)現(xiàn)遠(yuǎn)遠(yuǎn)很復(fù)雜,這只是先從概念上區(qū)分開并發(fā)和并行。