Dispatch_barrier允许在并发队列中创建一个同步点,当并发队列中遇到一个dispatch_barrier时,会延时执行该dispatch_barrier,等待在dispatch_barrier之前提交的任务block执行完之后才开始执行,之后,并发队列继续执行后续block任务。
上图说明:
在添加到队列的任务1,2,3执行完毕后,然后才执行barrier,barrier执行完之后,才执行任务4,5。
看一段代码和执行的打印结果:
注意这里指定给barrier添加的并发队列应该是自己通过dispatch_queue_create函数创建的,如果传的是一个串行队列或者全局并发队列,那此时dispatch_barrier等同于Dispatch_async。
看下面两段代码执行之后的打印结果就一目了然啦: