- dispatch_barrier_async:栅栏方法
顾名思义,dispatch_barrier_async就像一个栅栏一样把我们队列中的任务分开,比如我们有两组异步并发队列:A和B,第一个队列A需要打印从0到10,第二个队列B需要打印从100到1000。正常情况下,A和B是同时开始工作,这个时候,我们需要在A执行完毕的时候再执行打印从11到50的操作,并且在执行完毕打印11到50这个操作前不允许B有任何操作,这时候dispatch_barrier_async就可以起到这个作用了。
dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{
//打印0到10
for (int i = 0; i < 11; i++) {
NSLog(@“0到10—%d”,i);
}
});
dispatch_barrier_async(queue, ^{
//打印11到50
for (int i = 11; i < 51; i++) {
NSLog(@“11到50—%d”,i);
}
});
dispatch_async(queue, ^{
//打印100到1000
for (int i = 100; i < 1001; i++) {
NSLog(@“100到1000---%d",i);
}
});
网友评论