美文网首页iOS 深度好文面试
iOS gcd栅栏函数dispatch_barrier使用注意

iOS gcd栅栏函数dispatch_barrier使用注意

作者: cocoa_ziyue | 来源:发表于2020-05-25 18:08 被阅读0次

    dispatch_barrier栅栏函数的作用就不用我多说了。常见的使用场景经常
    1、多线程操作同一数据进行 多读单写 线程安全控制;
    2、多线程执行不同任务的前后时序控制;

    思考一个问题,串行队列还有必要使用dispatch_barrier栅栏函数吗?
    很显然,dispatch_barrier在串行队列上发挥不了作用。

    因此,dispatch_barrier一般配合的是并发队列。

    请看下面截图代码


    截屏2020-05-25 下午6.03.57.png

    你觉得输出结果是?
    任务1,任务2随意,任务3一定在任务1,任务2后,任务4一定在任务3后?

    不好意思太天真了。
    任务1,任务2,任务3,任务4都是随意的。

    内心mmp?怎么搞得?

    罪魁祸首就是你获取的是系统级别的全局并发队列,
    解决办法,自己创建一个自定义的并发队列。
    正确的姿势:


    截屏2020-05-25 下午6.07.48.png

    相关文章

      网友评论

        本文标题:iOS gcd栅栏函数dispatch_barrier使用注意

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