併發和並行的區別?

2021-08-30 13:42:10 字數 1018 閱讀 5636

併發(concurrency)是問題域中的概念-程式需要被設計成能夠處理多個同時(或者幾乎同時)發生的事件;而並行(parallellism)則是方法域中的概念-通過將問題中的多個部分並行執行,來加速解決問題。

引用rob pike的經典描述:

併發是同一時間應對(dealing with)多件事情的能力;

並行是同一時間動手做(doing)多件事情的能力;

理解:解釋一:並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。

解釋二:並行是在不同實體上的多個事件,併發是在同一實體上的多個事件。

解釋三:在一台處理器上「同時」處理多個任務,在多台處理器上同時處理多個任務。如hadoop分布式集群

普通解釋:

併發:交替做不同事情的能力

並行:同時做不同事情的能力

專業術語:

併發:不同的**塊交替執行

並行:不同的**塊同時執行

例子:比如,我正在打遊戲,現在有**打進來,有個快遞需要去樓下取一下。

序列的方式:我必須打完遊戲,才能去取快遞。

並行的方式:讓女朋友幫忙取快遞,繼續打遊戲。(會不會***?)

併發的方式:自己去取快遞,然後繼續回來打遊戲。

從例子我們可以看出序列方式和併發方式的區別,序列的方式我必須把乙個事情做完,才能繼續做第二個事情。

而併發的方式我可以把乙個事情做一部分,然後做第二個事情,再繼續做第乙個事情。而並行的方式是我做第乙個事情,

找第二個人做第二個事情。

上面的例子對應的解釋一就是:在同一時刻進行了打遊戲和取快遞兩件事情,這是並行。在同一時間間隔我們不妨把間隔當成一天(便於理解),在同一天進行了打遊戲和取快遞兩件事情。

對應的解釋二就是:並行是我和女朋友兩個實體進行的,併發是我自己這乙個實體進行的。

對應的解釋三就是:這個同時是相對的,以天為單位,我今天同時做了打遊戲和取快遞兩件事情。但是以分為單位就是不是了。

多台處理器對應多個人,處理多個任務。

併發和並行區別?

做併發程式設計之前,必須首先理解什麼是併發,什麼是並行,什麼是併發程式設計,什麼是並行程式設計。併發 concurrency 和並行 parallellism 是 解釋一 並行是指兩個或者多個事件在同一時刻發生 而併發是指兩個或多個事件在同一時間間隔發生。解釋二 並行是在不同實體上的多個事件,併發是...

併發和並行的區別

併發就是一心二用 多用 比如你一邊聽老師講課,一邊低頭看課桌下韓寒的 這兩件事你在同時做,而且這兩件事並不一定需要相關。而並行就是兵分幾路幹同乙個事情。比如別人看 只能一行一行的看,而你能一目十行,這就是並行。關於併發和並行的區別,go語言有乙個非常好的教材,叫做 併發不是並行 它以go語言為例,並...

併發和並行的區別

在github上看到一幅圖,問如何向五歲的小孩講解併發和並行。然後有人以這幅圖做答 用咖啡機的比喻來形容併發和並行,從中最直接的體會是,併發是有狀態的,某一線程同時執行乙個任務,完了才能進行到下乙個,而並行是無狀態的。併發與並行是兩個既相似而又不相同的概念 併發性,又稱共行性,是指能處理多個同時性活...