Dispatch_barrier_async(线程同步)
2017-09-04 本文已影响18人
天心鸥兹
Dispatch_barrier允许在并发队列中创建一个同步点,当并发队列中遇到一个dispatch_barrier时,会延时执行该dispatch_barrier,等待在dispatch_barrier之前提交的任务block执行完之后才开始执行,之后,并发队列继续执行后续block任务。
![](https://img.haomeiwen.com/i1485773/8580548a90959afe.png)
上图说明:
在添加到队列的任务1,2,3执行完毕后,然后才执行barrier,barrier执行完之后,才执行任务4,5。
看一段代码和执行的打印结果:
![](https://img.haomeiwen.com/i1485773/ccad1c7fc3b850cf.png)
![](https://img.haomeiwen.com/i1485773/5cdfdd718f3505f4.png)
注意这里指定给barrier添加的并发队列应该是自己通过dispatch_queue_create函数创建的,如果传的是一个串行队列或者全局并发队列,那此时dispatch_barrier等同于Dispatch_async。
看下面两段代码执行之后的打印结果就一目了然啦:
![](https://img.haomeiwen.com/i1485773/203c9169168cbde2.png)
![](https://img.haomeiwen.com/i1485773/3fb7534ffc091f48.png)