派遣组允许组织线程知道一个或者多个任务执行完成。
如果有一种场景,比如在队列中的任务没有执行完之前,主线程不应该继续往下运行,此时就可以使用派遣组技术来让一个或者多个队列等待执行完毕后再返回主线程。
下面的例子显示了创建派遣组的基本用法:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, queue, ^{
//执行一些异步的工作
});
//一些其他的处理
//在派遣组中等待,阻止当前的线程继续执行
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
将队列以及任务添加进组,使用方法dispatch_group_async,第11行调用了dispatch_group_wait方法等待所有组内的任务结束后才会返回。