GCD—调度组

原创 2015年11月21日 00:55:42
  • 模拟下载图片 说明调度组的用法
  • 注意:dispatch_group_enter & dispatch_group_leave 必须成对出现
- (void)gcdDemo1{
    // 队列
    dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

    // 创建组对象
    dispatch_group_t group =  dispatch_group_create();

    // 进入组 -- 后续往队列中添加的任务就受组管理
    dispatch_group_enter(group);
    dispatch_async(queue, ^{
        NSLog(@"下载图片1 == %@",[NSThread currentThread]);
        // 在block内部最后一句代码,要离开组
        // 提示:进入组和离开组的代码必须成对出现
        dispatch_group_leave(group);
    });


    dispatch_group_enter(group);
    dispatch_async(queue, ^{
        NSLog(@"下载图片2 == %@",[NSThread currentThread]);
        // 在block内部最后一句代码,要离开组
        dispatch_group_leave(group);
    });

    dispatch_group_enter(group);
    dispatch_async(queue, ^{
        NSLog(@"下载图片3 == %@",[NSThread currentThread]);
        [NSThread sleepForTimeInterval:3.0];
        dispatch_group_leave(group);
    });

    // 通知主线程更新UI
//    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
//        NSLog(@"更新UI");
//    });
    // 一直等待组空,如果不空,永远在等待...
    // 同步函数
    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
    NSLog(@"更新UI");

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ios多线程操作(八)—— GCD调度组

有这么一个需要,分别执行2个耗时的异步操作,等2个异步操作都执行完毕后在回到主线程执行操作。如果想要快速高效地实现这个需求,可以考虑使用调度组。 调度组的创建代码如下: dispatch_grou...

iOS开发笔记>> GCD调度组的使用

特点: 调度组中的所有异步任务执行结束后, 会得到统一的通知 使用场景: 监听一组异步任务是否执行结束, 如果执行结束就能得到统一的通知 常规用法:  - (void)gcdDemo1 ...

[第2章]多线程:GCD的简单使用(2)——调度组

调度组,dispatch group,异步,多线程,GCD,iOS,苹果

GCD(三) ---- dispatch_group 调度群组

使用dispatch_group,不考虑执行顺序的执行完一组并行任务之后再进行其他操作...

iOS 开发 多线程详解之GCD应用延迟操作,单例设计模式,调度组

GCD延时操作特点:时间特别精确- (void)afterDemo { NSLog(@"start"); /* 参数1 : dispatch_time_t when : 延迟多...

深入学习中央调度(GCD)--第二部分

更新说明:查阅我们基于iOS8.0和Swift下中央调度(http://www.raywenderlich.com/79150/grand-central-dispatch-tutorial-swif...

深入学习中央调度(GCD)--第一部分

原文地址:https://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1​      更新说明:查阅我们基于iOS...

iOS 多线程篇8—GCD的常见用法

一、延迟执行1.介绍iOS常见的延时执行有2种方式 (1)调用NSObject的方法[self performSelector:@selector(run) withObject:nil after...

IOS开发—深入理解 GCD(二)

原创地址:http://www.raywenderlich.com/63338/grand-central-dispatch-in-depth-part-2 欢迎来到GCD深入理解系列教程的第二...

iOS开发多线程篇—GCD的基本使用

iOS开发多线程篇—GCD的基本使用 一、主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。 提示:如果把...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GCD—调度组
举报原因:
原因补充:

(最多只允许输入30个字)