首页 > 其他 > 详细

GCD高级用法(二) dispatch_group

时间:2015-03-25 15:30:29      阅读:284      评论:0      收藏:0      [点我收藏+]
//————————————————————————dispatch_group_t—————————————————————————————
    
    
    //多个任务都结束后 的一个全部结束的处理
    
    //创建监听组
    dispatch_group_t group=dispatch_group_create();
    
    //创建并行队列
    dispatch_queue_t queue=dispatch_get_global_queue(0, 0);
    
   //使用 group 监听 队列任务的执行
    dispatch_group_async(group, queue, ^{
         //执行操作
        NSLog(@"task01");
    });
    
    dispatch_group_async(group, queue, ^{
        //执行操作
       
         NSLog(@"task02");
    });
    
    dispatch_group_async(group, queue, ^{
        //执行操作
         NSLog(@"task03");
    });
    
    dispatch_group_async(group, queue, ^{
        //执行操作
        //休眠6秒
        sleep(6);
        NSLog(@"task04");
    });
    
    //(1) 监视函数 dispatch_group_notify
    //队列操作执行结束
    dispatch_group_notify(group, queue, ^{
        //执行操作
        NSLog(@"done");
    });
    
    
    //(2)监视函数 dispatch_group_wait
    // 等待 time 时间后 对队列进行监听
    dispatch_time_t time=dispatch_time(DISPATCH_TIME_NOW, 5ull *NSEC_PER_SEC);
    long result=dispatch_group_wait(group, time);
    if (result ==0)
    {
        NSLog(@"finish");
    }else
    {
        NSLog(@"not finish");
    }
    
    //主线程休眠2秒
    sleep(2);
    
    NSLog(@"main task");
    
    // 最终打印
    /*
     
      13:08:32.501 GCD高级用法.03[1970:86112] task02
      13:08:32.501 GCD高级用法.03[1970:86113] task03
      13:08:32.501 GCD高级用法.03[1970:86111] task01
      13:08:37.501 GCD高级用法.03[1970:86078] not finish
      13:08:38.502 GCD高级用法.03[1970:86114] task04
      13:08:38.502 GCD高级用法.03[1970:86114] done
      13:08:39.502 GCD高级用法.03[1970:86078] main task
     
     task01-03并行任务 随机打印
     5秒之后分线程并没有完全执行结束 not finish
     task04 -> sleep(6)
     最终才执行 主线程的 main task
     结论:dispatch_group_wait 监听函数 会堵塞当前线程(该函数一直调用,等待到设定的时间之后才会返回)
     
     */

GCD高级用法(二) dispatch_group

原文:http://blog.csdn.net/swift_zero/article/details/44620459

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!