iOS多線程NSThread/NSOperation/GCD

一.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,它是在應用程序主線程上執行任務的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章