串行、並行與並發的理解


串行、並行與並發的理解

標簽(空格分隔): 串行 並行 並發


1 串行和並行

串行是大家排隊一個一個來,並行是大家一起上。

2 並發和並行

概念非常相似,難以區分。分別體現在兩個方面。

  • 並發(Concurrency),體現在(1)單個處理器;(2)邏輯上同步運行。
  • 並行(Parallelism),體現在(1)多處理器,多核心;(2)物理上同步運行。

2.1 並行的理解

並行,是真正的同時運行--在同一個時刻多個任務同時執行。例如多核處理器上,有多個線程同時執行同一段代碼。單核處理器無法在同一時刻執行多個任務,因此無法並行。

2.2 並發的理解

並發有兩種描述,一種是形容多個任務的執行狀態;另一種是對“並發性”的簡稱。

2.2.1 多任務執行狀態

因為處理器處理特別快,看上去像同步執行。

  • 兩個或者多個任務可以在某個重疊的時間段中啟動、運行、完成。
  • 並行(多個線程同時執行)一定是並發,兩者是包含關系。

3個線程由一個CPU交替執行(並發)。

3個線程同時由多個CPU執行(並行且並發)。

2.2.2 “並發性”的簡稱

程序的部分可以無序或者同時執行,且不影響最終的執行結果,表示程序具有並發性。

“並發性”在不同核心數計算機上有着不同的表現。對於多核CPU,可以做到真實的同時運行,即並行;對於單核CPU,可以通過多個線程切換時間片交替運行,實現並發。

2.3 是什么讓並發和並行成為了可能

  1. CPU的升級。單核CPU一次只能處理一條指令,基於此增加核心數,多線程處理任務,提高效率。
  2. 操作系統的升級。單核CPU可以通過搶占式調度實現多個線程的切換;多線程如何分配核心是有操作系統來決定,開發人員只需要創建並運行多個線程。
  3. 編程語言的升級--支持多線程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM