多執行緒概述

weixin_34249678發表於2017-05-27
  1. 多執行緒在iOS開發中是一個比較常見也十分重要的一門技術,首先我們知道每一個程式執行都會開啟一個程式,而一個程式想要執行任務,必須得有執行緒(每個程式至少需要一條執行緒),執行緒是程式最基本的執行單元,一個程式所有的任務都線上程中執行。
  2. 一個執行緒中的任務是序列的,如果一個執行緒中有多個任務,那麼只能一個一個的按照順序執行這些任務。
  3. 所謂多執行緒就是一個程式中開啟多條執行緒,每條執行緒可以並行(同時)執行不同的任務,多執行緒可以提高程式的執行效率

多執行緒的原理:

同一時間,CPU只能處理1條執行緒,只有1條執行緒在工作(執行)多執行緒併發(同時)執行,其實是CPU快速地在多條執行緒之間排程(切換)如果CPU排程執行緒的時間足夠快,就造成了多執行緒併發執行的假象。如果執行緒非常非常多,會發生什麼情況?CPU會在N多執行緒之間排程,CPU會累死,消耗大量的CPU資源每條執行緒被排程執行的頻次會降低(執行緒的執行效率降低)

多執行緒優缺點:

優點:
  1. 能適當的提高程式的執行效率;
  2. 能適當的提高資源利用率(CPU,記憶體利用率)
缺點:
  1. 開啟執行緒需要佔用一定的記憶體空間(預設情況下,主執行緒佔用1M,子執行緒佔用512KB),如果開啟大量的執行緒,會佔用大量的記憶體空間,降低程式的效能
  2. 執行緒越多,CPU在排程執行緒上的開銷就越大
  3. 程式設計更加複雜:比如執行緒之間的通訊、多執行緒的資料共享

開啟多執行緒方式

  1. Pthread 基於比較底層的C語言
  2. NSThread 基於OC語言,物件導向,可直接操作執行緒物件
  3. GCD 旨在替代NSThread ,充分利用裝置的多核
  4. NSOperation 基於GCD,比GCD多了一些功能,新增執行緒依賴,取消或暫停執行緒
GCD和NSOperation都是系統自動管理生命週期,功能頁比較強大,會經常使用

相關文章