iOS开发

学无止境

GCD—调度组

  • 模拟下载图片 说明调度组的用法
  • 注意: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");

}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yi_zz32/article/details/49955953
文章标签: gcd
个人分类: OC
所属专栏: IOS 多线程
上一篇GCD单例
下一篇GCD—主队列
想对作者说点什么? 我来说一句

多线程开发

2018年01月04日 26KB 下载

没有更多推荐了,返回首页

关闭
关闭