iOS開發探索-多線程(NSThread、NSOperation、GCD)編程淺談

lovedna 8年前發布 | 11K 次閱讀 Objective-C開發

來自: http://www.jianshu.com/p/329e3f9cb9c7


一、基本概念

進程: 一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。可以理解成一個運行中的應用程序。
線程:程序執行流的最小單元,線程是進程中的一個實體。
同步:只能在當前線程按先后順序依次執行,不開啟新線程。
異步:可以在當前線程開啟多個新線程執行,可不按順序執行。
隊列:裝載線程任務的隊形結構。
并發:線程執行可以同時一起進行執行。
串行:線程執行只能依次逐一先后有序的執行。

主線程:
一個iOS程序運行后,默認會開啟1條線程,稱為“主線程”或“UI線程”
主線程的主要作用:
顯示/刷新UI界面
處理UI事件(比如點擊事件、滾動事件、拖拽事件等)
注意:
一個進程可有多個線程。
一個進程可有多個隊列。
隊列可分并發隊列和串行隊列。

二、iOS多線程對比

  1. NSThread
    每個NSThread對象對應一個線程,真正最原始的線程。
    1)優點:NSThread 輕量級最低,相對簡單。
    2)缺點:手動管理所有的線程活動,如生命周期、線程同步、睡眠等。
  2. NSOperation
    自帶線程管理的抽象類。
    1)優點:自帶線程周期管理,操作上可更注重自己邏輯, 可以添加操作任務之間的依賴關系。
    2)缺點:面向對象的抽象類,只能實現它或者使用它定義好的兩個子類:NSInvocationOperation 和 NSBlockOperation。
  3. GCD
    Grand Central Dispatch (GCD)是Apple開發的一個多核編程的解決方法。
    1)優點:充分利用CPU多核,自動管理線程的生命周期, 最高效,避開并發陷阱。
    2)缺點:基于C實現。
  4. 選擇小結
    1)簡單而安全的選擇NSOperation實現多線程即可。
    2)處理大量并發數據,又追求性能效率的選擇GCD。
    3)NSThread本人選擇基本上是在做些小測試上使用,當然也可以基于此造個輪子。

以上筆者對多線程(NSThread、NSOperation、GCD)編程的簡單總結。
參考原文:
http://www.tuicool.com/articles/eQjUj2
http://www.cocoachina.com/ios/20160129/15153.html

在此感謝各位讀者的來訪,您的關注是我寫作分享的最大動力。

 本文由用戶 lovedna 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!