多執行緒簡介(多執行緒001)
阿新 • • 發佈:2019-01-29
4個基本概念
同步
- 之前寫程式的時候都是從上到下,從左到右,程式碼執行順序
- 1個執行緒執行多個任務,也是依次執行,1個執行緒同一時間執行1個任務
非同步
多個執行緒可以 "同時" 執行多個任務
程序
- 當前計算機中正在執行的程式
- 每個程序之間是獨立的,每個程序均執行在其專用的且受保護的記憶體空間內
- 通過“活動監視器”可以檢視Mac系統中所開啟的程序
執行緒
- 一個程序包含一個或多個執行緒
- 執行緒是程式執行的基本單位,程序中所有的任務都線上程中執行
多執行緒
多執行緒的基本概念
- 一個程序中可以開啟多個執行緒
- 多個執行緒是“同時”執行的
- 多執行緒可以提高程式的執行效率
執行原理
通過CPU的快速切換執行緒
特徵總結
- (單核CPU)同一時間,cpu只能處理1個執行緒,只有1個執行緒在執行
- 通過CPU的快速切換
- 切換時間非常短,造成了“同時”執行的現象
- 開啟非常多執行緒的時候,CPU切換執行緒消耗大量資源導致執行緒的執行效率降低
優缺點
優點
- 能適當的提程式的執行效率
- 能適當的提高資源的使用率
- 執行緒執行完所有任務後自動銷燬
缺點
- 開啟執行緒需要佔用一定的記憶體空間(預設情況下,每一個執行緒都佔512KB)
- 如果開啟大量的執行緒,會佔用大量的記憶體空間,降低程式的效能
- 執行緒越多,cpu在呼叫執行緒上的開銷就越大
- 程式設計更加複雜,比如執行緒間的通訊、多執行緒的資料共享
主執行緒
- 一個程式執行後,預設會開啟1個執行緒,稱為“主執行緒”或“UI執行緒”
- 主執行緒一般用來 重新整理UI介面 ,處理UI事件(比如:點選、滾動、拖拽等事件)
主執行緒使用注意
- 別將耗時的操作放到主執行緒中
- 耗時操作會卡住主執行緒,嚴重影響UI的流暢度,給使用者一種卡的壞體驗
iOS中的四中多執行緒技術的區別
簡介 | 語言 | 執行緒生命週期 | 使用頻率 | |
---|---|---|---|---|
pthread | 跨平臺POSIX,使用不便 | C | 手動 | 幾乎不用 |
NSThread | 面向物件,直接操作執行緒物件 | OC | 手動 | 偶爾 |
GCD | 對多核效能優化,使用方便 | C | 自動 | 經常 |
NSOperation | 對GCD的封裝,面向物件 | OC | 自動 | 經常 |