美文网首页
GCD中dispatch_barrier_async的使用

GCD中dispatch_barrier_async的使用

作者: 邓布利多教授 | 来源:发表于2019-03-11 10:40 被阅读0次
  • 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);
    }
});

相关文章

网友评论

      本文标题:GCD中dispatch_barrier_async的使用

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