您好,登錄后才能下訂單哦!
一、IOS 實現線程操作方式分別有:NSThread,Cocoa NSOperation,GCD(Grand Central Dispatch)三種;
NSThread其優點:相比其他兩個輕量級;缺點:需要自己管理線程的生命周期,線程同步;
Cocoa Operation的優點:不需要關心線程管理,數據同步的事情,可以把精力放在自己需要執行的操作上;實現相關類NSOperation,NSOperationQueue。NSOperation是個抽象類,使用它必須用它的子類,可以實現它或者使用它定義好的兩個子類:NSInvocationOperation 和 NSBlockOperation。創建NSOperation子類的對象,把對象添加到NSOperationQueue隊列里執行。
Grand Central Dispatch (GCD)是Apple開發的一個多核編程的解決方法。在iOS4.0開始之后才能使用。GCD是一個替代諸如NSThread, NSOperationQueue, NSInvocationOperation等技術的很高效和強大的技術
二、線程實現方法介紹:
NSThread有兩種直接創建方式:
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
此外可以用NSObject的類方法 performSelectorInBackground:withObject: 創建一個線程:
線程鎖對象:循環鎖NSRecursiveLock,條件鎖NSConditionLock,分布式鎖NSDistributedLock
Cocoa Operation
dispatch_queue_t serialQueue = dispatch_queue_create("roderick.m", DISPATCH_QUEUE_SERIAL);
dispatch_queue_t concurrentQueue = dispatch_queue_create("roderick.h", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(concurrentQueue, ^(void){
for (int i = 0; i < 100; i++) {
NSLog(@"%@ ====== %d",[NSThread currentThread],i);
}
});
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
for (int i = 0; i < 100; i++) {
NSLog(@"%@ ====== %d",[NSThread currentThread],i);
[NSThread sleepForTimeInterval:0.1];
}
});
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。