1. 程式人生 > >併發和並行區別

併發和並行區別

1、首先並行和併發都是 能更有效的完成 多執行緒任務的 方式,但是兩者有一些區別。

2、兩者的主要區別在於是否 “同時” 進行多個任務。

簡單的說:

  • 併發是交替做不同事物的能力。
  • 並行是同時做不同事物的能力。

從主體上說:

  • 併發是同一實體上的多個事件。如:一個老師交替輔導三個學生,輔導完學生a,在a消化知識的同時,老師輔導另一個學生。
  • 並行是多個實體上的多個事件。如:三個老師同時輔導三個學生。

從程式碼角度上來說:

  • 併發是不同程式碼塊交替執行。
  • 並行是不同程式碼塊同時執行。

3、併發看似“同時”在進行,實則不是。

  • 這裡需要提出CPU的時間觀念,CPU具有巨大的潛力,處理效率是很高很高的。人眼中的1秒鐘,在CPU眼裡像是度過了漫長時間。
  • 併發實際上是CPU在多個執行緒之間隨機切換處理,只是從人的角度看,貌似同時在進行。