zoukankan      html  css  js  c++  java
  • dispatch_barrier_async函数的作用

    代码:

    dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT);
    
    dispatch_async(queue, ^{
        NSLog(@"Before Barrier Block - 1");
    });
    dispatch_async(queue, ^{
        NSLog(@"Before Barrier Block - 2");
    });
    dispatch_async(queue, ^{
        NSLog(@"Before Barrier Block - 3");
    });
    dispatch_async(queue, ^{
        NSLog(@"Before Barrier Block - 4");
    });
    dispatch_async(queue, ^{
        NSLog(@"Before Barrier Block - 5");
    });
    
    dispatch_barrier_async(queue, ^{
        NSLog(@"Barrier Block");
    });
    
    dispatch_async(queue, ^{
        NSLog(@"After Barrier Block - 1");
    });
    dispatch_async(queue, ^{
        NSLog(@"After Barrier Block - 2");
    });
    dispatch_async(queue, ^{
        NSLog(@"After Barrier Block - 3");
    });
    dispatch_async(queue, ^{
        NSLog(@"After Barrier Block - 4");
    });
    dispatch_async(queue, ^{
        NSLog(@"After Barrier Block - 5");
    }); 

    可能的输出:

    Before Barrier Block - 1
    Before Barrier Block - 2
    Before Barrier Block - 3
    Before Barrier Block - 5
    Before Barrier Block - 4
    Barrier Block
    After Barrier Block - 1
    After Barrier Block - 3
    After Barrier Block - 2
    After Barrier Block - 5
    After Barrier Block - 4

    备注:

    dispatch_barrier_async用于在同一个并发队列中,同步多个并发操作

  • 相关阅读:
    Python3.4 多线程
    OSG Win7 + VS2015 编译
    OSG-3.4.0 简要说明(Readme)
    Boost 1.62.0 编译参数
    VS2015 + QT5.7 中文的坑
    C++库编译
    osg学习笔记3 简单几何模型
    Sqlserver 创建账号
    nginx检查报错:nginx: [emerg] "server" directive is not allowed here in
    Linux修改挂载目录名称
  • 原文地址:https://www.cnblogs.com/xwoder/p/6017886.html
Copyright © 2011-2022 走看看