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