GCD隊(duì)列g(shù)roup.h__group

group.h相關(guān)方法

group.h

方法介紹


/**
 創(chuàng)建組
 */
dispatch_group_t
dispatch_group_create(void);

/**
組內(nèi)部異步線程

 @param group  組 
 @param queue  隊(duì)列
 @param block 任務(wù)
 */
void
dispatch_group_async(dispatch_group_t group,
    dispatch_queue_t queue,
    dispatch_block_t block);
/*
組內(nèi)部異步線程

 @param group 組
 @param queue  隊(duì)列
 @param context 數(shù)據(jù)指針
 @param work C函數(shù)方法名
 */
void
dispatch_group_async_f(dispatch_group_t group,
    dispatch_queue_t queue,
    void *_Nullable context,
    dispatch_function_t work);

/*
等待組任務(wù)完成

 @param group 指定被等待的組
 @param timeout  等待的時(shí)長
 */
long
dispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout);

/*
組隊(duì)列中任務(wù)完成通知

 @param group 監(jiān)聽的組
 @param queue  監(jiān)聽的隊(duì)列
 @param block 任務(wù)完成回調(diào)
 */
void
dispatch_group_notify(dispatch_group_t group,
    dispatch_queue_t queue,
    dispatch_block_t block);

/*
組隊(duì)列中任務(wù)完成通知

 @param group 監(jiān)聽的組
 @param queue  監(jiān)聽的隊(duì)列
 @param context 任務(wù)數(shù)據(jù)指針
 @param work C函數(shù)方法名
 */
void
dispatch_group_notify_f(dispatch_group_t group,
    dispatch_queue_t queue,
    void *_Nullable context,
    dispatch_function_t work);

/*
加入任務(wù)組

 @param group 任務(wù)組
 */
void
dispatch_group_enter(dispatch_group_t group);

/*
離開任務(wù)組

 @param group 任務(wù)組
 */
void
dispatch_group_leave(dispatch_group_t group);

舉例說明:

dispatch_queue_t quene = dispatch_queue_create("com.Maker", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(quene, ^{
    dispatch_queue_t allTasksQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_group_t allTasksGroup = dispatch_group_create();
    dispatch_group_async(allTasksGroup, allTasksQueue, ^{
        NSLog(@"任務(wù)_1-----%d",[NSThread isMainThread]);
    });
    dispatch_group_async(allTasksGroup, allTasksQueue, ^{
        NSLog(@"任務(wù)_2-----%d",[NSThread isMainThread]);
    });
    dispatch_group_async(allTasksGroup, allTasksQueue, ^{
        NSLog(@"任務(wù)_3-----%d",[NSThread isMainThread]);
    });
    NSLog(@"--------------------");
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_FOREVER, 10 * NSEC_PER_SEC);
    if (dispatch_group_wait(allTasksGroup, time) == 0) {
        NSLog(@"任務(wù)已經(jīng)全部執(zhí)行完畢-----%d",[NSThread isMainThread]);
    }
    else {
        NSLog(@"任務(wù)沒有執(zhí)行完畢-----%d",[NSThread isMainThread]);
    }
    /*
    dispatch_group_notify(allTasksGroup, allTasksQueue, ^{
        NSLog(@"任務(wù)已經(jīng)全部執(zhí)行完畢-----%d",[NSThread isMainThread]);
    });
    */
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容