GCD 栅栏 dispatch_barrier

2018-12-15  本文已影响8人  Geniune

有的时候需要异步执行两组操作,第一组操作(任务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

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

上一篇 下一篇

猜你喜欢

热点阅读