日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

队列 和 线程 之GCD dispatch

發(fā)布時間:2025/3/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 队列 和 线程 之GCD dispatch 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.dispatch_queue_create? 創(chuàng)建隊列開啟異步線程(1,4,2,3)

  // 創(chuàng)建一個隊列dispatch_queue_t queue = dispatch_queue_create("my.test.queue", DISPATCH_QUEUE_CONCURRENT);NSLog(@"1111");// 開啟一個異步線程dispatch_async(queue, ^{NSLog(@"2222");// 線程等待10秒[NSThread sleepForTimeInterval:5];NSLog(@"3333");});NSLog(@"4444");

2.創(chuàng)建隊列開啟同步線程(1,2,3,4)

// 創(chuàng)建一個隊列dispatch_queue_t queue = dispatch_queue_create("my.test.queue", DISPATCH_QUEUE_CONCURRENT);NSLog(@"1111");// 開啟一個同步線程dispatch_sync(queue, ^{NSLog(@"2222");// 線程等待10秒[NSThread sleepForTimeInterval:5];NSLog(@"3333");});NSLog(@"4444");

3.dispatch_get_global_queue 獲取全局隊列開啟異步線程(1,4,2,3)

NSLog(@"1111");// 獲取全局隊列dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);// 開啟一個異步線程dispatch_async(queue, ^{NSLog(@"2222222");[NSThread sleepForTimeInterval:5];NSLog(@"333");});NSLog(@"4444");

4.獲取全局隊列開啟同步線程 (1,2,3,4)

NSLog(@"1111");// 獲取全局隊列dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);// 開啟一個同步線程dispatch_sync(queue, ^{NSLog(@"2222222");[NSThread sleepForTimeInterval:5];NSLog(@"333");});NSLog(@"4444");

5.dispatch_get_main_queue() ?獲取主線程隊列,再開啟異步線程(1,4,2,3)

NSLog(@"1111");// 獲取主線程隊列dispatch_queue_t queue = dispatch_get_main_queue();dispatch_async(queue, ^{NSLog(@"2222");[NSThread sleepForTimeInterval:5];NSLog(@"33333");});NSLog(@"4444");

6.獲取主線程隊列,再開啟同步線程 (1) 。 線程會因為死鎖,而永遠卡死

NSLog(@"1111");// 獲取主線程隊列dispatch_queue_t queue = dispatch_get_main_queue();dispatch_sync(queue, ^{NSLog(@"2222");[NSThread sleepForTimeInterval:5];NSLog(@"33333");});NSLog(@"4444");

?

總結:獲取全局隊列的名字是默認的,創(chuàng)建隊列時可以自己命名隊列的名字,其他用法都是一樣的。個人認為同步線程意義不大

7.dispatch_get_main_queue()? 回到主線程
??? 耗時操作需需要放在異步線程里,UI界面更新必須放在主界面里
??? [2376:131819] 1111
??? [2376:131819] 4444
??? [2376:131860] 2222
??? [2376:131860] 3333
??? [2376:131819] 5555
??? 從打印結果來看(1,4,5是在主線程里面,2,3是在異步線程里面)

NSLog(@"1111");// 獲取主線程隊列dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(queue, ^{NSLog(@"2222");[NSThread sleepForTimeInterval:5];// 回到主線程dispatch_async(dispatch_get_main_queue(), ^{NSLog(@"5555");});NSLog(@"3333");});NSLog(@"4444");

8.dispatch_apply? 執(zhí)行某個片段N(6)次

?

dispatch_apply(6, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t index) {NSLog(@"1111");});

9.dispatch_barrier_async 是在前面的任務執(zhí)行結束后它才執(zhí)行,而且它后面的任務等它執(zhí)行完成之后才會執(zhí)行 (2,1,3,4)

dispatch_queue_t queue = dispatch_queue_create("gcdtest.rongfzh.yc", DISPATCH_QUEUE_CONCURRENT);dispatch_async(queue, ^{[NSThread sleepForTimeInterval:3];NSLog(@"111");});dispatch_async(queue, ^{[NSThread sleepForTimeInterval:2];NSLog(@"222");});dispatch_barrier_async(queue, ^{NSLog(@"333_barrier");[NSThread sleepForTimeInterval:4];});dispatch_async(queue, ^{[NSThread sleepForTimeInterval:1];NSLog(@"444");});

10.dispatch_group_async 可以實現監(jiān)聽幾組任務是否完成,完成后使用 dispatch_group_notify 執(zhí)行其他的操作 (1,2,3,4)

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);// 創(chuàng)建一組任務dispatch_group_t group = dispatch_group_create();dispatch_group_async(group, queue, ^{[NSThread sleepForTimeInterval:1];NSLog(@"111");});dispatch_group_async(group, queue, ^{[NSThread sleepForTimeInterval:2];NSLog(@"222");});dispatch_group_async(group, queue, ^{[NSThread sleepForTimeInterval:3];NSLog(@"333");});// 監(jiān)聽所有組的任務完成之后執(zhí)行,一般是回到主線程刷新UI界面dispatch_group_notify(group, dispatch_get_main_queue(), ^{NSLog(@"444");});

11.dispatch_once 對于某個任務執(zhí)行一次,且只執(zhí)行一次。 dispatch_once函數有兩個參數,第一個參數predicate用來保證執(zhí)行一次,第二個參數是要執(zhí)行一次的任務block。

static dispatch_once_t predicate; dispatch_once(&predicate, ^{// some one-time task });

?

暫時用到這么多,以后再用到會繼續(xù)補充,也歡迎大家指出遺漏!

轉載于:https://www.cnblogs.com/shen5214444887/p/4917343.html

總結

以上是生活随笔為你收集整理的队列 和 线程 之GCD dispatch的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本不卡一区 | 国产精品女同一区二区 | 动漫玉足吸乳羞免费网站玉足 | 爱如潮水3免费观看日本高清 | 中文字幕一区二区久久人妻 | 丁香激情综合 | 麻豆av网站 | 国产经典一区二区三区 | 日韩视频网站在线观看 | 丁香婷婷久久久综合精品国产 | 日本少妇激情 | 中文精品在线观看 | 日韩精品一区二区三区在线视频 | 国产精品色在线网站 | 亚洲成人a√ | 久久久综合网 | 欧美极品videos精品 | 99热8| 91成人午夜 | 娇喘顶撞深初h1v1 | 国产sm调教视频 | 在线观看黄色av网站 | 一卡二卡久久 | 国产一区h | 男女性杂交内射妇女bbwxz | 亚洲成人激情在线 | 国产精品99久久久久久www | 都市激情亚洲色图 | 午夜激情av | 日本丰满熟妇bbxbbxhd | 99热免费| 国产 中文 字幕 日韩 在线 | 亚洲夜色| 夫妻自拍偷拍 | 午夜寂寞影院在线观看 | 久久这里只有精品久久 | 福利一区二区 | 国产欧美综合在线 | 免费成人在线网站 | 亚洲影视一区二区三区 | 翔田千里一区 | 国产一区2 | 国产精品一线二线三线 | 涩涩网站在线 | 性大片潘金莲裸体 | 一起操在线 | 亚洲国产精彩视频 | 成年人免费在线 | 国产精品一区二区在线播放 | 亚洲精品污一区二区三区 | 欧美日韩在线不卡 | 狠狠搞视频 | 国产盗摄精品一区二区酒店 | 久草中文在线视频 | 亚洲乱妇 | 欧美成人a交片免费看 | 天天草比 | 欧美四虎 | 黄色三级片毛片 | 亚洲色图网址 | 日韩欧美二区三区 | 日韩精品一区二区三区电影 | 宗合久久| 亚洲国产色图 | 一区二区三区www污污污网站 | 久久国产精品-国产精品 | 日本一区二区欧美 | 亚洲天堂资源在线 | 日韩成人av网站 | 欧美三级图片 | 欧美精品日韩在线 | 五月婷婷激情视频 | 日韩精品无码一区二区三区 | 色综合久久天天综合网 | 日韩一级片网站 | 日韩av电影一区 | 国产内射一区二区 | 成人小说亚洲一区二区三区 | 四虎在线免费播放 | 可以直接在线观看的av | 亚洲日日操 | 国产地址| 亚洲人毛茸茸 | 国产日产精品一区二区三区 | 精品免费观看 | 色综合久久综合 | 欧美日韩中文字幕一区 | 国产喷白浆一区二区三区 | 日韩有码在线视频 | 黄色免费网站视频 | 在线国产小视频 | 婷婷九月丁香 | 激情开心网站 | 亚洲区视频在线观看 | 亚洲免费视频一区二区 | 免费一级特黄3大片视频 | www国产精品内射老熟女 | 调教91 | 亚洲 高清 成人 动漫 |