dispatch group能够把任务分组。等待这组任务执行完毕,在回调函数中继续往下执行。比如,可以把压缩一系列文件的任务表示成dispatch group:
这个函数用于等待dispatch group执行完毕:
dispatch_group_tdispatch_group_create();
有两种方法给任务编组。
void dispatch_group_async(dispatch_group_t group, dispatch_queue_t queue, dispatch_block_t block);
这个方法是dispatch_async的变体。另一种办法是:
void dispatch_group_enter(dispatch_group_t group);
void dispatch_group_leave(dispatch_group+t group);
前者可以使分组中正要执行的任务数递增,后者递减。所以,调用了dispatch_group_enter,只有必须对应一个dispatch_group_leave,如果只有enter没有leave,这个任务永远执行不玩。
这个函数用于等待dispatch group执行完毕:
long dispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout);
如果执行dispatch group的时间小于timeout,返回0,否则返回非0值。timeout参数也可以取常量DISPATCH_TIME_FOREVER,会一直等dispatch group执行完,不会超时。
void dispatch_group_notify(