并發(fā)(concurrency)和并行(parallellism)是:
- 解釋一:并行是指兩個(gè)或者多個(gè)事件在同一時(shí)刻發(fā)生;而并發(fā)是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔發(fā)生裤园。
- 解釋二:并行是在不同實(shí)體上的多個(gè)事件斗搞,并發(fā)是在同一實(shí)體上的多個(gè)事件焦履。
- 解釋三:并行是在多臺(tái)處理器上同時(shí)處理多個(gè)任務(wù)到推。如 hadoop 分布式集群床三,并發(fā)是在一臺(tái)處理器上“同時(shí)”處理多個(gè)任務(wù)纠炮。
所以并發(fā)編程的目標(biāo)是充分的利用處理器的每一個(gè)核月趟,以達(dá)到最高的處理性能。
并行(parallel):指在同一時(shí)刻恢口,有多條指令在多個(gè)處理器上同時(shí)執(zhí)行孝宗。所以無(wú)論從微觀還是從宏觀來(lái)看,二者都是一起執(zhí)行的耕肩。
并發(fā)(concurrency):指在同一時(shí)刻只能有一條指令執(zhí)行因妇,但多個(gè)進(jìn)程指令被快速的輪換執(zhí)行,使得在宏觀上具有多個(gè)進(jìn)程同時(shí)執(zhí)行的效果看疗,但在微觀上并不是同時(shí)執(zhí)行的沙峻,只是把時(shí)間分成若干段,使多個(gè)進(jìn)程快速交替的執(zhí)行两芳。
并行在多處理器系統(tǒng)中存在摔寨,而并發(fā)可以在單處理器和多處理器系統(tǒng)中都存在,并發(fā)能夠在單處理器系統(tǒng)中存在是因?yàn)椴l(fā)是并行的假象怖辆,并行要求程序能夠同時(shí)執(zhí)行多個(gè)操作是复,而并發(fā)只是要求程序假裝同時(shí)執(zhí)行多個(gè)操作(每個(gè)小時(shí)間片執(zhí)行一個(gè)操作删顶,多個(gè)操作快速切換執(zhí)行)。
當(dāng)有多個(gè)線程在操作時(shí)淑廊,如果系統(tǒng)只有一個(gè) CPU逗余,則它根本不可能真正同時(shí)進(jìn)行一個(gè)以上的線程,它只能把 CPU 運(yùn)行時(shí)間劃分成若干個(gè)時(shí)間段季惩,再將時(shí)間段分配給各個(gè)線程執(zhí)行录粱,在一個(gè)時(shí)間段的線程代碼運(yùn)行時(shí),其它線程處于掛起狀態(tài).這種方式我們稱之為并發(fā)(Concurrent)。
當(dāng)系統(tǒng)有一個(gè)以上 CPU 時(shí)画拾,則線程的操作有可能非并發(fā)啥繁。當(dāng)一個(gè) CPU 執(zhí)行一個(gè)線程時(shí),另一個(gè) CPU 可以執(zhí)行另一個(gè)線程青抛,兩個(gè)線程互不搶占 CPU 資源旗闽,可以同時(shí)進(jìn)行,這種方式我們稱之為并行(Parallel)。