一、背景簡介
平時在進行多線程處理任務(wù)時,有時候希望多個任務(wù)之間存在著一種聯(lián)系,希望在所有的任務(wù)執(zhí)行完后做一些總結(jié)性處理。
那么就可以將多個任務(wù)放在一個任務(wù)組中進行統(tǒng)一管理。dispatch提供了相應(yīng)的API供我們完成這一需求。
二、dispatch_group_t相關(guān)屬性介紹
1.dispatch_group_async(group, queue, block);
將block任務(wù)添加到queue隊列,并被group組管理
2.dispatch_group_enter(group);
聲明dispatch_group_enter(group)下面的任務(wù)由group組管理,group組的任務(wù)數(shù)+1
3.dispatch_group_leave(group);
相應(yīng)的任務(wù)執(zhí)行完成,group組的任務(wù)數(shù)-1
4.dispatch_group_create();
創(chuàng)建一個group組
5.dispatch_group_wait(group1, DISPATCH_TIME_FOREVER);
當(dāng)前線程暫停,等待dispatch_group_wait(group1, DISPATCH_TIME_FOREVER)上面的任務(wù)執(zhí)行完成后,線程才繼續(xù)執(zhí)行。
6.dispatch_group_notify(group1, queue1,block);
監(jiān)聽group組中任務(wù)的完成狀態(tài),當(dāng)所有的任務(wù)都執(zhí)行完成后,觸發(fā)block塊,執(zhí)行總結(jié)性處理。
三、常見用法的區(qū)別
在使用group組處理任務(wù)時,常見的有兩種組合。
其一:
dispatch_group_async(group, queue, block);
dispatch_group_notify(group1, queue1, block);
在這種組合下,根據(jù)任務(wù)是同步、異步又分為兩種,這兩種組合的執(zhí)行代碼與運行結(jié)果如下:
第一種:同步任務(wù)時
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26