有的时候需要异步执行两组操作,第一组操作(任务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
如果本文对你有帮助记得点个喜欢哈
网友评论