一、Thread
主要利用NSThread這個(gè)類,一個(gè)NSThread實(shí)例代表著一條線程
1、優(yōu)點(diǎn):NSThread比其他兩種多線程方案較輕量級(jí),更直觀地控制線程 對(duì)象
2、缺點(diǎn):需要自己管理線程的生命周期,線程同步。線程同步對(duì)數(shù)據(jù)的枷鎖會(huì)有一定的系統(tǒng)開銷
二、GCD
Grand Central Dispatch(GCD)是Apple開發(fā)的一個(gè)多核編程的較新的解決方案。它主要用于優(yōu)化應(yīng)用程序以支持多核處理器以及其他 對(duì)稱多處理 系統(tǒng)。它是一個(gè)在線程池模式的基礎(chǔ)上執(zhí)行的并行任務(wù)。在MAC OS X10.6雪豹中首次推出,也可在IOS4及以上版本使用
GCD是一個(gè)提到注冊(cè)NSTread等技術(shù)的很搞笑和強(qiáng)大的技術(shù)。GCD完全可以處理諸如數(shù)據(jù)多訂和資源泄漏等復(fù)雜的異步編程問題。GCD的工作原理是讓一個(gè)程序,根據(jù)可用的處理資源,安排他們?cè)谌魏慰捎玫奶幚砥骱诵纳吓抨?duì)執(zhí)行特定的任務(wù),這個(gè)任務(wù)可以是一個(gè)功能或者一個(gè)程序段。
GCD的多有的調(diào)度隊(duì)列都是先進(jìn)先出隊(duì)列,因此,隊(duì)列中的任務(wù)的開始順序和添加到隊(duì)列的中的順序相同。我們可以將部分獨(dú)立運(yùn)行的任務(wù)添加隊(duì)列,由系統(tǒng)管理執(zhí)行.
GCD隊(duì)列主要有三種,系統(tǒng)主隊(duì)列main_queue、全局并發(fā)隊(duì)列g(shù)lobal_queue和自定義隊(duì)列
并行對(duì)壘
1、同步并行隊(duì)列:隊(duì)列的執(zhí)行任務(wù)與主線程是同步的,會(huì)阻塞主線程。
2、異步并行隊(duì)列:隊(duì)列的執(zhí)行任務(wù)與主線程是異步的。
串行隊(duì)列:隊(duì)列中的任務(wù)必須在前一個(gè)任務(wù)結(jié)束后才能執(zhí)行
1、同步并行隊(duì)列:隊(duì)列的執(zhí)行任務(wù)與主線程是同步的會(huì)阻塞主線程
2、異步串行隊(duì)列:隊(duì)列的執(zhí)行任務(wù)與主線程是異步的
三、NSOperation
NSOperation實(shí)例封裝了需要執(zhí)行的操作和執(zhí)行操作所需的數(shù)據(jù),并且能夠以并發(fā)或非并發(fā)的方式執(zhí)行這個(gè)操作。
NSOperation本身是抽象積累,因此必須使用它的子類,使用NSOperation子類的方式有兩種:
1>自定義 Foundation框架提供了兩個(gè)具體的子類直接供我們使用:NSInvocationOperation和NSblockoperation
2>自定義子類繼承NSOperation實(shí)現(xiàn)內(nèi)部相應(yīng)的方法
NSOperation調(diào)用start方法即可開始執(zhí)行操作,NSOperation對(duì)象默認(rèn)按同步方式執(zhí)行,也就是在調(diào)用start方法的那那個(gè)線程中直接執(zhí)行。
一個(gè)NSOperation對(duì)象可以通過代用start方法來執(zhí)行任務(wù),默認(rèn)任務(wù)是同步執(zhí)行的。也可以將NSOpeartion添加到一個(gè)NSOeration添加到一個(gè)NSOperationQueue(操作隊(duì)列)中去執(zhí)行,而且是異步執(zhí)行的。