IOS 三種線程操作方式詳解

一、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];

        }

    });


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