中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
iOS

 

 

1.iOS的三種多線(xiàn)程技術(shù)                          

1.NSThread 每個(gè)NSThread對(duì)象對(duì)應(yīng)一個(gè)線(xiàn)程,量級(jí)較輕(真正的多線(xiàn)程)2.以下兩點(diǎn)是蘋(píng)果專(zhuān)門(mén)開(kāi)發(fā)的“并發(fā)”技術(shù),使得程序員可以不再去關(guān)心線(xiàn)程的具體使用問(wèn)題?NSOperation/NSOperationQueue 面向?qū)ο蟮木€(xiàn)程技術(shù)?GCD —— Grand Central Dispatch(派發(fā)) 是基于C語(yǔ)言的框架,可以充分利用多核,是蘋(píng)果推薦使用的多線(xiàn)程技術(shù)

 

以上這三種編程方式從上到下,抽象度層次是從低到高的,抽象度越高的使用越簡(jiǎn)單,也是Apple最推薦使用的,在項(xiàng)目中很多框架技術(shù)分別使用了不同多線(xiàn)程技術(shù)。

 

2.三種多線(xiàn)程技術(shù)的對(duì)比                          

·NSThread:–優(yōu)點(diǎn):NSThread 比其他兩個(gè)輕量級(jí),使用簡(jiǎn)單–缺點(diǎn):需要自己管理線(xiàn)程的生命周期、線(xiàn)程同步、加鎖、睡眠以及喚醒等。線(xiàn)程同步對(duì)數(shù)據(jù)的加鎖會(huì)有一定的系統(tǒng)開(kāi)銷(xiāo) ·NSOperation:–不需要關(guān)心線(xiàn)程管理,數(shù)據(jù)同步的事情,可以把精力放在自己需要執(zhí)行的操作上–NSOperation是面向?qū)ο?/span> ·GCD:–Grand Central Dispatch是由蘋(píng)果開(kāi)發(fā)的一個(gè)多核編程的解決方案。iOS4.0+才能使用,是替代NSThread, NSOperation的高效和強(qiáng)大的技術(shù)–GCD是基于C語(yǔ)言的

 

3.三種多線(xiàn)程技術(shù)的實(shí)現(xiàn)                          

3.1. NSThread的多線(xiàn)程技術(shù),                                                  

 

 1> 類(lèi)方法直接開(kāi)啟后臺(tái)線(xiàn)程,并執(zhí)行選擇器方法

    detachNewThreadSelector

  

1  // 新建一個(gè)線(xiàn)程,調(diào)用@selector方法2 3 [NSThread detachNewThreadSelector:@selector(bigDemo) toTarget:self withObject:nil];

 

 

 

 2> 成員方法,在實(shí)例化線(xiàn)程對(duì)象之后,需要使用start執(zhí)行選擇器方法

    initWithTarget

 

   // 成員方法    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(bigDemo) object:nil];        // 啟動(dòng)start線(xiàn)程    [thread start];

 

 

 

 

 

 對(duì)于NSThread的簡(jiǎn)單使用,可以用NSObject的performSelectorInBackground替代

 

1   // performSelectorInBackground是將bigDemo的任務(wù)放在后臺(tái)線(xiàn)程中執(zhí)行2 3     [self performSelectorInBackground:@selector(bigDemo) withObject:nil];

 

 同時(shí),在NSThread調(diào)用的方法中,同樣要使用autoreleasepool進(jìn)行內(nèi)存管理,否則容易出現(xiàn)內(nèi)存泄露。

 1   // 自動(dòng)釋放池 2  3     // 負(fù)責(zé)其他線(xiàn)程上的內(nèi)存管理,在使用NSThread或者NSObject的線(xiàn)程方法時(shí),一定要使用自動(dòng)釋放池 4  5     // 否則容易出現(xiàn)內(nèi)存泄露。 6  7     @autoreleasepool { 8  9 10 11   }

 

 

3.2 NSOperation,面向?qū)ο蟮亩嗑€(xiàn)程技術(shù)                                            

 

 1> 使用步驟:

    1) 實(shí)例化操作

 

1     // 實(shí)例化操作隊(duì)列2     _queue = [[NSOperationQueue alloc] init];

 

 

        a) NSInvocationOperation

1     NSInvocationOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(opAction) object:nil];2     3     // 如果使用start,會(huì)在當(dāng)前線(xiàn)程啟動(dòng)操作4 //    [op1 start];5     6     // 1. 一旦將操作添加到操作隊(duì)列,操作就會(huì)啟動(dòng)7     [_queue addOperation:op1];

 

    

        b) NSBlockOperation

 1 #pragma mark 模仿下載網(wǎng)絡(luò)圖像 2 - (IBAction)operationDemo3:(id)sender 3 { 4     // 1. 下載 5     NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{ 6         NSLog(@"下載 %@" , [NSThread currentThread]); 7     }]; 8     // 2. 濾鏡 9     NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{10         NSLog(@"濾鏡 %@" , [NSThread currentThread]);11     }];12     // 3. 顯示13     NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{14         NSLog(@"更新UI %@" , [NSThread currentThread]);15     }];16     17     // 添加操作之間的依賴(lài)關(guān)系,所謂“依賴(lài)”關(guān)系,就是等待前一個(gè)任務(wù)完成后,后一個(gè)任務(wù)才能啟動(dòng)18     // 依賴(lài)關(guān)系可以跨線(xiàn)程隊(duì)列實(shí)現(xiàn)19     // 提示:在指定依賴(lài)關(guān)系時(shí),注意不要循環(huán)依賴(lài),否則不工作。20     [op2 addDependency:op1];21     [op3 addDependency:op2];22 //    [op1 addDependency:op3];23     24     [_queue addOperation:op1];25     [_queue addOperation:op2];26     [[NSOperationQueue mainQueue] addOperation:op3];27 }

 

 

    2) 將操作添加到隊(duì)列NSOperationQueue即可啟動(dòng)多線(xiàn)程執(zhí)行

 

1    [_queue addOperation:op1];2    [_queue addOperation:op2];

 

 2> 更新UI使用主線(xiàn)程隊(duì)列

 

    //兩方式    [NSOpeationQueue mainQueue] addOperation ^{  };    [[NSOperationQueue mainQueue] addOperation:op3];

 

 

 3> 操作隊(duì)列的setMaxConcurrentOperationCount

    可以設(shè)置同時(shí)并發(fā)的線(xiàn)程數(shù)量!

1     // 控制同時(shí)最大并發(fā)的線(xiàn)程數(shù)量2     [_queue setMaxConcurrentOperationCount:2];

 

    提示:此功能僅有NSOperation有!

 

 4> 使用addDependency可以設(shè)置任務(wù)的執(zhí)行先后順序,同時(shí)可以跨操作隊(duì)列指定依賴(lài)關(guān)系

   

1      // 添加操作之間的依賴(lài)關(guān)系,所謂“依賴(lài)”關(guān)系,就是等待前一個(gè)任務(wù)完成后,后一個(gè)任務(wù)才能啟動(dòng)2 3    // 依賴(lài)關(guān)系可以跨線(xiàn)程隊(duì)列實(shí)現(xiàn)4 5     // 提示:在指定依賴(lài)關(guān)系時(shí),注意不要循環(huán)依賴(lài),否則不工作。6   [op2 addDependency:op1];7   [op3 addDependency:op2];8   [op1 addDependency:op3];

 

    提示:在指定依賴(lài)關(guān)系時(shí),注意不要循環(huán)依賴(lài),否則不工作。

 

 

3.3. GCD,C語(yǔ)言                                                      

 

 GCD就是為了在“多核”上使用多線(xiàn)程技術(shù)

 

 1> 要使用GCD,所有的方法都是dispatch開(kāi)頭的

 2> 名詞解釋

 global  全局

 queue   隊(duì)列

 async   異步

 sync    同步

 

 3> 要執(zhí)行異步的任務(wù),就在全局隊(duì)列中執(zhí)行即可

 dispatch_async 異步執(zhí)行控制不住先后順序

 

 4> 關(guān)于GCD的隊(duì)列

全局隊(duì)列    dispatch_get_global_queue

            參數(shù):優(yōu)先級(jí) DISPATCH_QUEUE_PRIORITY_DEFAULT

                 始終是 0

1  dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

 

            可同步 可異步

     

        串行隊(duì)列   

    dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_SERIAL);

 

            是創(chuàng)建得到的,不能直接獲取

     

            只能同步

        主隊(duì)列      dispatch_get_main_queue

1 dispatch_async(dispatch_get_main_queue(), ^{2         NSLog(@"main - > %@", [NSThread currentThread]);3     });

 

     

            只能同歩

 5> 異步和同步與方法名無(wú)關(guān),與運(yùn)行所在的隊(duì)列有關(guān)!

 同步主要用來(lái)控制方法的被調(diào)用的順序

 

 

 

 

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
12 iOS開(kāi)發(fā)多線(xiàn)程篇—NSOperation基本操作
關(guān)于iOS多線(xiàn)程,你看我就夠了(已更新)
iOS多線(xiàn)程:『GCD』詳盡總結(jié)
iOS多線(xiàn)程GCD詳解
IOS多線(xiàn)程編程步驟詳解
iOS多線(xiàn)程編程之Grand Central Dispatch(GCD)介紹和使用
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服