- NSThread
- Cocoa NSOperation (使用NSOperation和NSOperationQueue)
- GCD (Grand Central Dispatch)
1.NSThread:(兩種創(chuàng)建方式)
[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];
NSThread *myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil];
[myThread start];
優(yōu)點(diǎn):NSThread 比其他兩個(gè)輕量級啊终。 缺點(diǎn):需要自己管理線程的生命周期,線程同步傲须,線程同步時(shí)對數(shù)據(jù)的加鎖會(huì)有一定的系統(tǒng)開銷蓝牲。
2.Cocoa Operation
NSOperationQueue*oprationQueue= [[NSOperationQueuealloc] init];
oprationQueueaddOperationWithBlock:^{
//這個(gè)block語句塊在子線程中執(zhí)行
}
優(yōu)點(diǎn):不需要關(guān)心線程管理,數(shù)據(jù)同步的事情泰讽。 Cocoa Operation 相關(guān)的類是 NSOperation 例衍,NSOperationQueue昔期。NSOperation是個(gè)抽象類,使用它必須用它的子類肄渗,可以實(shí)現(xiàn)它或者使用它定義好的兩個(gè)子類:NSInvocationOperation 和 NSBlockOperation镇眷。創(chuàng)建NSOperation子類的對象,把對象添加到NSOperationQueue隊(duì)列里執(zhí)行翎嫡,我們會(huì)把我們的執(zhí)行操作放在NSOperation中main函數(shù)中欠动。
3.GCD Grand Central Dispatch (GCD)是Apple開發(fā)的一個(gè)多核編程的解決方法,GCD是一個(gè)替代諸如NSThread, NSOperationQueue, NSInvocationOperation等技術(shù)的很高效和強(qiáng)大的技術(shù)惑申。它讓程序平行排隊(duì)的特定任務(wù)具伍,根據(jù)可用的處理資源,安排他們在任何可用的處理器核心上執(zhí)行任務(wù)圈驼,一個(gè)任務(wù)可以是一個(gè)函數(shù)(function)或者是一個(gè)block人芽。 dispatch queue分為下面三種: private dispatch queues,同時(shí)只執(zhí)行一個(gè)任務(wù)绩脆,通常用于同步訪問特定的資源或數(shù)據(jù)萤厅。 global dispatch queue,可以并發(fā)地執(zhí)行多個(gè)任務(wù)靴迫,但是執(zhí)行完成的順序是隨機(jī)的惕味。 Main dispatch queue 它是在應(yīng)用程序主線程上執(zhí)行任務(wù)的。 GCD 掃盲篇;
更多:iOS面試題合集