1、整體理解多執行緒
阿新 • • 發佈:2018-12-22
目錄
多執行緒
業務模型的需要
- 並不是為了提高系統的效能,而是在業務上確實需要多個執行單元
- 比如 http伺服器為每一個Socket連線新建一個處理執行緒
- 讓不同的執行緒承擔不同的業務工作
- 簡化任務排程
效能
摩爾定律失效
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