1. 程式人生 > >淺談並行與併發

淺談並行與併發

1、示例:

  順序執行:你吃飯吃到一半,電話來了,你一直到吃完了以後才去接,這就說明你不支援併發也不支援並行。

  併發:你吃飯吃到一半,電話來了,你停了下來接了電話,接完後繼續吃飯,這說明你支援併發。

  並行:你吃飯吃到一半,電話來了,你一邊打電話一邊吃飯,這說明你支援並行。此處注意理解:是同時吃,同時說,要真嚴格的說的話,需要2張嘴才是並行。

 

2、理解: 

  (1)並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。

  (2)並行是在不同實體上的多個事件;併發是在同一實體上的多個事件。

  (3)併發:不同的程式碼塊交替執行;並行:不同的程式碼塊同時執行。

 

3、總結:

  在併發程式中可以同時擁有兩個或者多個執行緒。這意味著,如果程式在單核處理器上執行,那麼這兩個執行緒將交替地換入或者換出記憶體。這些執行緒是同時“存在”的每個執行緒都處於執行過程中的某個狀態。

  如果程式能夠並行執行,那麼就一定是執行在多核處理器上。此時,程式中的每個執行緒都將分配到一個獨立的處理器核上,因此可以同時執行。

  顧名思義,併發強調的是一起出發,並行強調的是一起執行。併發的反義是順序,並行的反義是序列。併發並行並不是互斥概念,只不過併發強調任務的抽象排程,並行強調任務的實際執行