关闭

GCD—调度组

标签: gcd
1560人阅读 评论(0) 收藏 举报
分类:
  • 模拟下载图片 说明调度组的用法
  • 注意: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");

}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:302422次
    • 积分:4626
    • 等级:
    • 排名:第6577名
    • 原创:169篇
    • 转载:1篇
    • 译文:0篇
    • 评论:45条
    博客专栏
    文章分类
    最新评论