调度组dispatch_group_t


1. OC的方法

- (void)group1{


      //创建调度组

    dispatch_group_t group = dispatch_group_create();

    

    // 队列执行

    dispatch_queue_t q = dispatch_get_global_queue(0, 0);

    

    

    //调度组的监听调度任务

    dispatch_group_async(group, q, ^{

        

        NSLog(@"downLoad 1 -%@",[NSThread currentThread]);

        

    });

    dispatch_group_async(group, q, ^{

        

        NSLog(@"downLoad 2 -%@",[NSThread currentThread]);

        

    });

    dispatch_group_async(group, q, ^{

        

        NSLog(@"downLoad 3 -%@",[NSThread currentThread]);

        

    });

    

    //任务全部完成监听回调

    dispatch_group_notify(group, dispatch_get_main_queue(), ^{

        NSLog(@"come here -%@",[NSThread currentThread]);


    });

    

}

/*

//终端: man dispatch_group_enter


void

dispatch_group_async(dispatch_group_t group, dispatch_queue_t queue, dispatch_block_t block)

{

    //入组 --监听随后的Block

    dispatch_retain(group);

    dispatch_group_enter(group);

    

    //异步执行 queue 调度 block

    dispatch_async(queue, ^{

        block();

       

        //出组

        dispatch_group_leave(group);

        dispatch_release(group);

    });

}

**/

- (void)group2{


    //创建调度组

    dispatch_group_t group = dispatch_group_create();

    

    // 队列执行

    dispatch_queue_t q = dispatch_get_global_queue(0, 0);

    

    //入组

    dispatch_group_enter(group);

    

    dispatch_async(q, ^{

       

        NSLog(@"downLoad 1 -%@",[NSThread currentThread]);


        //出组

        dispatch_group_leave(group);

        

    });

    //入组

    dispatch_group_enter(group);

    dispatch_async(q, ^{

        

        [NSThread sleepForTimeInterval:2.0];

        

        NSLog(@"downLoad 2 -%@",[NSThread currentThread]);

        

        //出组

        dispatch_group_leave(group);

        

    });

    

    //入组

    dispatch_group_enter(group);

    dispatch_async(q, ^{

        

        NSLog(@"downLoad 3 -%@",[NSThread currentThread]);

        

        //出组

        dispatch_group_leave(group);

        

    });

    


    //任务全部完成监听回调

    dispatch_group_notify(group, dispatch_get_main_queue(), ^{

        NSLog(@"come here -%@",[NSThread currentThread]);

        

    });

}


2. SWIFT的方法 -- 进组和出组的数目要一样


     // 调度组

        let group = DispatchGroup()

     // A> 入组

            group.enter()

     // B> 出组 

                group.leave()


       // C> 监听调度组情况

        group.notify(queue: DispatchQueue.main) { 

            print("调度组完成  ")


        }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值