1. 程式人生 > >如何理解併發(Concurrency)和並行(Parallelism)的區別

如何理解併發(Concurrency)和並行(Parallelism)的區別

網上有很多對併發和並行的解釋,講的很多,對一些人說理解起來還是有些吃力,我這裡儘量用最簡單的例子說一下自己對這兩個概念的解釋。


併發Concurrency:一個人幹多件事(一個執行緒處理多個任務)

例如:燒水和看報紙,一個時間區間裡燒水和看報紙這兩件事是可以同時進行的(一邊看報,一邊燒水大笑),看報的時候再時不時的看一下水開了沒有

結論:單個事情的處理時間並不會縮短,無論你要燒水期間幹什麼事情,燒水花費的時間是不會變的,如果幹的事情多了,反倒是在多個事情切換的過程中多花時間,會使所有事情加在一起總的處理效率下降(多執行緒的上下文切換)


並行Parallelism:多個人幹一件事(多個執行緒處理一個任務)

例如:就像蓋房子(砌一面牆),一個時間區間裡大家乾的都是這一件事情,

結論:人越多,每人分工幹一部分,就會縮短建造時間

實際應該過程中,還是需要跟據需求來決定用哪種方式,在大資料處理中常用的mapreduce 設計思想其實就是並行。

文章很簡短,但願大家能理解。