iOS開發探索-多線程(NSThread、NSOperation、GCD)編程淺談
來自: http://www.jianshu.com/p/329e3f9cb9c7
一、基本概念
進程: 一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。可以理解成一個運行中的應用程序。
線程:程序執行流的最小單元,線程是進程中的一個實體。
同步:只能在當前線程按先后順序依次執行,不開啟新線程。
異步:可以在當前線程開啟多個新線程執行,可不按順序執行。
隊列:裝載線程任務的隊形結構。
并發:線程執行可以同時一起進行執行。
串行:線程執行只能依次逐一先后有序的執行。
主線程:
一個iOS程序運行后,默認會開啟1條線程,稱為“主線程”或“UI線程” 主線程的主要作用: 顯示/刷新UI界面 處理UI事件(比如點擊事件、滾動事件、拖拽事件等)
注意:
一個進程可有多個線程。 一個進程可有多個隊列。 隊列可分并發隊列和串行隊列。
二、iOS多線程對比
- NSThread
每個NSThread對象對應一個線程,真正最原始的線程。
1)優點:NSThread 輕量級最低,相對簡單。
2)缺點:手動管理所有的線程活動,如生命周期、線程同步、睡眠等。 - NSOperation
自帶線程管理的抽象類。
1)優點:自帶線程周期管理,操作上可更注重自己邏輯, 可以添加操作任務之間的依賴關系。
2)缺點:面向對象的抽象類,只能實現它或者使用它定義好的兩個子類:NSInvocationOperation 和 NSBlockOperation。 - GCD
Grand Central Dispatch (GCD)是Apple開發的一個多核編程的解決方法。
1)優點:充分利用CPU多核,自動管理線程的生命周期, 最高效,避開并發陷阱。
2)缺點:基于C實現。 - 選擇小結
1)簡單而安全的選擇NSOperation實現多線程即可。
2)處理大量并發數據,又追求性能效率的選擇GCD。
3)NSThread本人選擇基本上是在做些小測試上使用,當然也可以基于此造個輪子。
以上筆者對多線程(NSThread、NSOperation、GCD)編程的簡單總結。
參考原文:
http://www.tuicool.com/articles/eQjUj2
http://www.cocoachina.com/ios/20160129/15153.html
在此感謝各位讀者的來訪,您的關注是我寫作分享的最大動力。
本文由用戶 lovedna 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!