美文网首页
GCD dispatch_barrier_async

GCD dispatch_barrier_async

作者: 怎样m | 来源:发表于2017-07-05 16:29 被阅读39次

    dispatch_barrier_async这个方法。barrier 这个单词的意思是障碍,拦截的意思,也即是说dispatch_barrier_async一定是有拦截事件的作用。

    dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);

    dispatch_async(concurrentQueue, ^(){

    NSLog(@"dispatch-1");

    });

    dispatch_async(concurrentQueue, ^(){

    NSLog(@"dispatch-2");

    });

    dispatch_barrier_async(concurrentQueue, ^(){

    NSLog(@"dispatch-barrier");

    });

    dispatch_async(concurrentQueue, ^(){

    NSLog(@"dispatch-3");

    });

    dispatch_async(concurrentQueue, ^(){

    NSLog(@"dispatch-4");

    });

    dispatch_barrier_async 作用是在并行队列中,等待前面两个操作并行操作完成,这里是并行输出

    dispatch-1,dispatch-2

    然后执行

    dispatch_barrier_async中的操作,(现在就只会执行这一个操作)执行完成后,即输出

    "dispatch-barrier,

    最后该并行队列恢复原有执行状态,继续并行执行

    dispatch-3,dispatch-4

    相关文章

      网友评论

          本文标题:GCD dispatch_barrier_async

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