调度组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("调度组完成  ")


        }





猜你喜欢

转载自blog.csdn.net/qq_24143647/article/details/72828444
今日推荐