美文网首页
GCD 栅栏 dispatch_barrier

GCD 栅栏 dispatch_barrier

作者: Geniune | 来源:发表于2018-12-15 10:10 被阅读8次

    有的时候需要异步执行两组操作,第一组操作(任务1、任务2、任务3)执行完毕后,才执行第二组(任务4、任务5)。
    这样就需要一个像栅栏一样的方法将两组异步执行的操作分割开来,在执行完栅栏前面的操作后执行栅栏方法,最后执行栅栏后面的操作。

    dispatch_queue_t queue = dispatch_queue_create("net.testQueue", DISPATCH_QUEUE_CONCURRENT);
    
    dispatch_async(queue, ^{
        
        NSLog(@"任务1");
    });
    dispatch_async(queue, ^{
        
        NSLog(@"任务2");
    });
    dispatch_async(queue, ^{
        
        NSLog(@"任务3");
    });
    
    dispatch_barrier_async(queue, ^{
        NSLog(@"barrier 栅栏,第一组造作执行完成,开始执行第二组");
    });
    
    dispatch_async(queue, ^{
        
        NSLog(@"任务4");
    });
    dispatch_async(queue, ^{
        
        NSLog(@"任务5");
    });
    dispatch_async(queue, ^{
        
        NSLog(@"任务6");
    });
    

    控制台输出:


    image.png

    如果本文对你有帮助记得点个喜欢哈

    相关文章

      网友评论

          本文标题:GCD 栅栏 dispatch_barrier

          本文链接:https://www.haomeiwen.com/subject/lhiohqtx.html