1. 程式人生 > >多執行緒簡介(多執行緒001)

多執行緒簡介(多執行緒001)

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 自動 經常