一、背景簡介
平時(shí)在進(jìn)行多線程處理任務(wù)時(shí),有時(shí)候希望多個(gè)任務(wù)之間存在著一種聯(lián)系,希望在所有的任務(wù)執(zhí)行完后做一些總結(jié)性處理。
那么就可以將多個(gè)任務(wù)放在一個(gè)任務(wù)組中進(jìn)行統(tǒng)一管理。dispatch提供了相應(yīng)的API供我們完成這一需求。

二、dispatch_group_t相關(guān)屬性介紹
1.dispatch_group_async(group, queue, block);
將block任務(wù)添加到queue隊(duì)列,并被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)建一個(gè)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ù)時(shí),常見的有兩種組合。
其一:

dispatch_group_async(group, queue, block);

dispatch_group_notify(group1, queue1, block);

在這種組合下,根據(jù)任務(wù)是同步、異步又分為兩種,這兩種組合的執(zhí)行代碼與運(yùn)行結(jié)果如下:

第一種:同步任務(wù)時(shí)

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

        		

網(wǎng)友評(píng)論