1. 程式人生 > >談談並行、併發或多執行緒

談談並行、併發或多執行緒

1.CPU的發展趨勢:

     核心數目依舊會越來越多,根據摩爾定律,由於單個核心效能提升有著嚴重的瓶頸問題,普通的PC桌面在2018年可能回到24核心。

2.併發和並行的區別:

     所有的併發處理都有排隊等候,喚醒和執行這三個步驟,所以併發是巨集觀的觀念,在微觀上他們都是序列被處理的,只不過資源不會在某一個上被阻塞(一般是通過時間片輪轉),所以在巨集觀上多個幾乎同時到達的請求同時在被處理。如果是同一時刻到達的請求也會根據優先順序的不同,先後進入佇列排隊等候執行。

     併發與並行是兩個既相似但是卻不相同的概念:

         併發性:又稱共行性,是指處理多個同時性活動的能力,。

         並行:指同時發生兩個併發事件,具有併發的含義。併發不一定並行,也可以說併發事件之間不一定要同一時刻發生。 

     併發的實質是一個物理CPU(也可以是多個物理CPU)在若干個程式之間多路複用,併發性是對有限物理資源強制行使 多使用者共享以提高效率。

     並行指兩個或兩個以上事件或活動在同一時刻發生,在多道程式環境下,並行使多個程式同一時刻可在不同CPU上同時執行。    

     併發是在同一個cpu上同時(不是真正的同時,而是看來是同時,因為CPU要在多個程式之間切換)執行多個程式。

     並行是每一個CPU執行一個程式。

     打個比方:併發就像一個人(CPU)喂兩個小孩(程式)吃飯,表面上是兩個小孩在吃飯,實際是一個人在喂。

                      並行就是兩個人喂兩個小孩子吃飯。 

3.併發、並行和多執行緒的關係:

     並行需要兩個或兩個以上的執行緒跑在不同的處理器上,併發可以跑在一個處理器上通過時間片進行切換。