1. 程式人生 > >1、整體理解多執行緒

1、整體理解多執行緒

目錄

 

多執行緒

業務模型的需要 

效能

核心概念

同步和非同步

併發和並行

臨界區

阻塞和非阻塞

死鎖 飢餓 活鎖

並行的級別

阻塞

非阻塞

兩大定律

阿姆達爾定律

古斯塔夫森


多執行緒

 

業務模型的需要 

  1. 並不是為了提高系統的效能,而是在業務上確實需要多個執行單元
  2. 比如 http伺服器為每一個Socket連線新建一個處理執行緒
  3. 讓不同的執行緒承擔不同的業務工作
  4. 簡化任務排程

效能

摩爾定律失效
cpu單核效能瓶頸4GHZ,硬體開發者將效能拋給軟體開發者
硬體上設計多核CPU,讓多執行緒應用程式比單執行緒要快
多執行緒讓整個應用相對單執行緒的應用來說,效能更好

核心概念

同步和非同步

同步:傳送一個請求,等待返回,然後再發送下一個請求 
非同步:傳送一個請求,不等待返回,隨時可以再發送下一個請求,在不同的執行緒中執行

併發和並行

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

並行舉例子:兩個人在喂兩個孩子吃飯,這叫並行,因為是同時進行的 ;
併發舉例子:如果是一個人喂兩個孩子吃飯,輪流著每人喂一口,這叫併發,因為是交替進行的。

臨界區

阻塞和非阻塞

死鎖 飢餓 活鎖

死鎖舉例:甲、乙都需要做蛋糕(假設:蛋糕需要 雞蛋 麵粉 ),
甲擁有雞蛋,乙擁有面粉,但都不肯交出自己手上的東西,導致蛋糕無法做出來。

並行的級別

阻塞

當一個執行緒進入臨界區後,其他執行緒必須等待

舉例:只有一個廁所(臨界區),排隊上廁所,
必須上一個人上完。下一個才能上。

非阻塞

無障礙
    

無鎖
    無障礙 、 保證有一個執行緒可以勝出

無等待
    無鎖的、有限步完成、無飢餓

兩大定律

阿姆達爾定律

題目一、如果有5個步驟的程式,每個步驟消耗100個時間單位。假設步驟2和步驟5可以完全並行,並且你有無窮多個處理器。那麼根據Amdahl加速比是多少?
解答: 3個步驟必須序列,另外兩個步驟可以並行,那麼序列比例F=3/5;
根據阿姆達爾定律:加速比=1/(F+(1-F)/n),當n趨近無窮大的時候,
加速比=1/F = 1/(3/5) = 5/3 = 1.67,也就是說這種方式的極限加速比是1.67

古斯塔夫森