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