一.iOS三種多線程編程的技術
1.NSThread
2.NSOperation
3.GCD 全程: Grand Central Dispatch
抽象度從上到下依次從低到高,抽象度越高使用越簡單.
二.三種方式的優缺點介紹
NSThread:(原文地址:http://blog.csdn.net/totogo2010/article/details/8010231)
優點: NSThread比其他兩個輕量級
缺點:需要自己管理線程的生命週期,線程同步. 線程同步對數據的加鎖會有一定的系統開銷
Cocoa operation:(原文地址:http://blog.csdn.net/totogo2010/article/details/8013316)
優點:不需要關心線程管理,數據同步的事情,可以把精力放在自己需要執行的操作上.
相關的類是NSOperation,NSOperationQueue. NSOperation是個抽象類,使用它必須用它的子類,可以實現它或者使用它定義好的兩個子類:NSInvocationOperation和NSBlockOperation. 創建NSOperation子類的對象,把對象添加到NSOperationQueue隊列裏執行.
GCD:(原文地址:http://blog.csdn.net/totogo2010/article/details/8016129)
Grand Central Dispatch (GCD)是Apple開發的一個多核編程的解決方法. 在iOS4.0開始之後才能使用. GCD是一個替代諸如NSThread,NSOperationQueue,NSInvocationOperation等技術的很高效和強大的技術. 現在的iOS系統都升級到8了,所以不用擔心該技術不能使用.
工作原理:讓程序平行排列的特定任務,根據可用的處理資源,安排他們在任何可用的處理器核心上執行任務. 一個任務可以是一個函數(function)或者是一個block. GCD的底層依然是用線程實現, 不過這樣可以讓程序猿不用關注實現的細節.
GCD中的FIFO隊列稱爲dispatch queue,它可以保證先進來的任務先得到執行. dispatch queue分爲下面三種:
Serial
又稱爲private dispatch queue, 同時只執行一個任務. Serial queue通常用於同步訪問特定的資源或數據. 當你創建多個Serial queue時,雖然他們各自是同步執行的,但Serial queue與Serial queue之間是併發執行的.
Concurrent
又稱爲global dispatch queue,可以併發地執行多個任務,但是執行完成的順序是隨機的.
Main dispatch queue
它是全局可用的serial queue,它是在應用程序主線程上執行任務的.