dispatch_barrier栅栏函数的作用就不用我多说了。常见的使用场景经常
1、多线程操作同一数据进行 多读单写 线程安全控制;
2、多线程执行不同任务的前后时序控制;
思考一个问题,串行队列还有必要使用dispatch_barrier栅栏函数吗?
很显然,dispatch_barrier在串行队列上发挥不了作用。
因此,dispatch_barrier一般配合的是并发队列。
请看下面截图代码
你觉得输出结果是?
任务1,任务2随意,任务3一定在任务1,任务2后,任务4一定在任务3后?
不好意思太天真了。
任务1,任务2,任务3,任务4都是随意的。
内心mmp?怎么搞得?
罪魁祸首就是你获取的是系统级别的全局并发队列,
解决办法,自己创建一个自定义的并发队列。
正确的姿势: