美文网首页
dispatch_barrier_async的作用

dispatch_barrier_async的作用

作者: 神的旨意 | 来源:发表于2017-06-30 17:45 被阅读0次

作用

  • 实现高效率的数据库访问和文件访问
  • 避免数据竞争

前提条件

  • 必须使用dispatch_queue_create 创建队列
  • 且队列属性为 DISPATCH_QUEUE_CONCURRENT
    (注意:使用 dispatch_barrier_async,该函数只能搭配自定义并行队列 dispatch_queue_t 使用。不能使用: dispatch_get_global_queue,否则 dispatch_barrier_async 的作用会和 dispatch_async 的作用一模一样。 )
dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(queue, ^{
        NSLog(@"--1---%@",[NSThread currentThread]);
    });
    dispatch_async(queue, ^{
        NSLog(@"--2---%@",[NSThread currentThread]);
    });
    dispatch_barrier_async(queue, ^{
        NSLog(@"--barrier---%@",[NSThread currentThread]);
    });
    dispatch_async(queue, ^{
        NSLog(@"--3---%@",[NSThread currentThread]);
    });
    dispatch_async(queue, ^{
        NSLog(@"--4---%@",[NSThread currentThread]);
    });

结果

2017-06-30 17:34:11.889 test[50672:716568] --1---<NSThread: 0x6080000792c0>{number = 3, name = (null)}
2017-06-30 17:34:11.889 test[50672:716586] --2---<NSThread: 0x600000079f80>{number = 4, name = (null)}
2017-06-30 17:34:11.889 test[50672:716586] --barrier---<NSThread: 0x600000079f80>{number = 4, name = (null)}
2017-06-30 17:34:11.889 test[50672:716586] --3---<NSThread: 0x600000079f80>{number = 4, name = (null)}
2017-06-30 17:34:11.889 test[50672:716568] --4---<NSThread: 0x6080000792c0>{number = 3, name = (null)}

其中 --barrier--- 前的和后的是不确定的,但3,4 一定在1,2 后面执行
参考链接

相关文章

  • GCD

    dispatch_barrier_async 函数的作用:如果任务是通过dispatch_barrier_asyn...

  • 面试题

    1.dispatch_barrier_async的作用是什么? dispatch_barrier_async 函数...

  • dispatch_barrier_async的作用

    作用 实现高效率的数据库访问和文件访问 避免数据竞争 前提条件 必须使用dispatch_queue_create...

  • dispatch_barrier_async 的作用

    1、通过dispatch_barrier_async函数提交的任务会等它前面的任务执行完才开始,然后它后面的任务必...

  • GCD分析(下)

    栅栏函数的应用 栅栏函数 作用: 控制任务执行顺序,同步 dispatch_barrier_async 前面的任务...

  • GCD中的队列

    栅栏队列: dispatch_barrier_async(swift3.0以前的写法)这种队列的作用是阻挡前面和后...

  • GCD 底层源码分析(三)

    栅栏函数 栅栏函数最直接的作用就是控制任务的执行顺序,同步。 dispatch_barrier_async 前面的...

  • dispatch_barrier_async的注意事项

    dispatch_barrier_async 的注意是事项 使用 dispatch_barrier_async ,...

  • dispatch_barrier_async

    使用实例 控制台输出 dispatch_barrier_async 作用是在并行队列中,等待前面的操作并行操作完成...

  • iOS多线程 - GCD中的栅栏函数

    一、什么是栅栏函数 dispatch_barrier_async函数,在进程管理中起到一个栅栏的作用,它等待所有位...

网友评论

      本文标题:dispatch_barrier_async的作用

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