並發:
並發(Concurrent),在操作系統中,是指一個時間段中有幾個程序都處於已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行。
並發不是真正意義上的“同時進行”,只是CPU把一個時間段划分成幾個時間片段(時間區間),然后在這幾個時間區間之間來回切換,由於CPU處理的速度非常快,只要時間間隔處理得當,即可讓用戶感覺是多個應用程序同時在進行。如:打游戲和聽音樂兩件事情在同一個時間段內都是在同一台電腦上完成了從開始到結束的動作。那么,就可以說聽音樂和打游戲是並發的。
並行:
並行(Parallel),當系統有一個以上CPU時,當一個CPU執行一個進程時,另一個CPU可以執行另一個進程,兩個進程互不搶占CPU資源,可以同時進行,這種方式我們稱之為並行(Parallel)。
其實決定並行的因素不是CPU的數量,而是CPU的核心數量,比如一個CPU多個核也可以並行。
如下圖所示:
所以,並發是在一段時間內宏觀上多個程序同時運行,並行是在某一時刻,真正有多個程序在運行。
並行和並發的區別:
並發,指的是多個事情,在同一時間段內同時發生了。
並行,指的是多個事情,在同一時間點上同時發生了。
並發的多個任務之間是互相搶占資源的。
並行的多個任務之間是不互相搶占資源的、
只有在多CPU或者一個CPU多核的情況中,才會發生並行。否則,看似同時發生的事情,其實都是並發執行的。