44、通过Dispatch Group机制,根据系统资源状况来执行任务

dispatch group 是GCD的一项特性,能够把任务分组。调用者可以等待这组任务执行完毕,也可以在提供会掉函数之后继续往下执行,这组任务完成时,调用者会得到通知。

// 把任务编组
// 方法1:
void dispatch_group_async(dispatch_group_t group, 
                          dispatch_queue_t queue, 
                          dispatch_block_t block);
// 方法2:
void dispatch_group_enter(dispatch_group_t group);
void dispatch_group_leave(dispatch_group_t group);

// 等待group执行完毕:
// 方法1:
long dispatch_group_wait(dispatch_geoup_t group, 
                         dispatch_time_t timeout); // 会阻塞
// 方法2:
void dispatch_group_notify(dispatch_group_t group, 
                           dispatch_queue_t queue, 
                           dispatch_block_t block);

要点:

  • 一系列任务可归入一个dispatch group中。开发者可以在这组任务执行完毕时获得通知

  • 通过dispatch group,可以在并发式派发队列里同事执行多项任务,此时GCD会根据系统资源状况来调度这些并发执行的任务。开发者若自己来实现此功能,则需编写大量代码

Last updated

Was this helpful?