GCD中dispatch_group的使用
2022-05-18 本文已影响0人
萤火驻守心间
dispatch_group可以将GCD的任务合并到一个组里来管理。本质相当于初始值为LONG_MAX的信号量,等待group中的任务完成其实是等待value恢复初始值。
使用场景:多张图片上传完成后刷新视图
思路:
1、将所有耗时操作放在group中,等全部操作完成回到主线程刷新UI。
2、当group内的block都执行完成时调用dispatch_group_notify,回到主线程刷新
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_queue_create(0, 0), ^{
for (int i=0; i<3; i++) {
NSLog(@"任务%d",i);
sleep(3);
}
NSLog(@"已执行完成");
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"group已执行完成");
});