併發(concurrency)和並行(parallellism)是:
解釋一:並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。
解釋二:並行是在不同實體上的多個事件,併發是在同一實體上的多個事件。
解釋三:並行是在一台處理器上「同時」處理多個任務,併發是在多台處理器上同時處理多個任務。如 hadoop 分布式集群。
所以併發程式設計的目標是充分的利用處理器的每乙個核,以達到最高的處理效能。
並行(parallel):指在同一時刻,有多條指令在多個處理器上同時執行。所以無論從微觀還是從巨集觀來看,二者都是一起執行的。
併發(concurrency):指在同一時刻只能有一條指令執行,但多個程序指令被快速的輪換執行,使得在巨集觀上具有多個程序同時執行的效果,但在微觀上並不是同時執行的,只是把時間分成若干段,使多個程序快速交替的執行。
並行在多處理器系統中存在,而併發可以在單處理器和多處理器系統中都存在,併發能夠在單處理器系統中存在是因為併發是並行的假象,並行要求程式能夠同時執行多個操作,而併發只是要求程式假裝同時執行多個操作(每個小時間片執行乙個操作,多個操作快速切換執行)。
當有多個執行緒在操作時,如果系統只有乙個 cpu,則它根本不可能真正同時進行乙個以上的執行緒,它只能把 cpu 執行時間劃分成若干個時間段,再將時間段分配給各個執行緒執行,在乙個時間段的執行緒**執行時,其它執行緒處於掛起狀態.這種方式我們稱之為併發(concurrent)。
當系統有乙個以上 cpu 時,則執行緒的操作有可能非併發。當乙個 cpu 執行乙個執行緒時,另乙個 cpu 可以執行另乙個執行緒,兩個執行緒互不搶占 cpu 資源,可以同時進行,這種方式我們稱之為並行(parallel)。
併發和並行區別?
做併發程式設計之前,必須首先理解什麼是併發,什麼是並行,什麼是併發程式設計,什麼是並行程式設計。併發 concurrency 和並行 parallellism 是 解釋一 並行是指兩個或者多個事件在同一時刻發生 而併發是指兩個或多個事件在同一時間間隔發生。解釋二 並行是在不同實體上的多個事件,併發是...
併發和並行的區別
併發就是一心二用 多用 比如你一邊聽老師講課,一邊低頭看課桌下韓寒的 這兩件事你在同時做,而且這兩件事並不一定需要相關。而並行就是兵分幾路幹同乙個事情。比如別人看 只能一行一行的看,而你能一目十行,這就是並行。關於併發和並行的區別,go語言有乙個非常好的教材,叫做 併發不是並行 它以go語言為例,並...
併發和並行的區別
在github上看到一幅圖,問如何向五歲的小孩講解併發和並行。然後有人以這幅圖做答 用咖啡機的比喻來形容併發和並行,從中最直接的體會是,併發是有狀態的,某一線程同時執行乙個任務,完了才能進行到下乙個,而並行是無狀態的。併發與並行是兩個既相似而又不相同的概念 併發性,又稱共行性,是指能處理多個同時性活...