Dispatch_barrier_async(线程同步)

Dispatch_barrier允许在并发队列中创建一个同步点,当并发队列中遇到一个dispatch_barrier时,会延时执行该dispatch_barrier,等待在dispatch_barrier之前提交的任务block执行完之后才开始执行,之后,并发队列继续执行后续block任务。

上图说明:

在添加到队列的任务1,2,3执行完毕后,然后才执行barrier,barrier执行完之后,才执行任务4,5。

看一段代码和执行的打印结果:

Dispatch_barrier_async
打印结果1

注意这里指定给barrier添加的并发队列应该是自己通过dispatch_queue_create函数创建的,如果传的是一个串行队列或者全局并发队列,那此时dispatch_barrier等同于Dispatch_async。

看下面两段代码执行之后的打印结果就一目了然啦:

通过dispatch_queue_create函数创建
通过并发队列创建
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容