您的位置:首页 > 其它

dispatch_barrier_async的作用是什么?

2015-10-31 20:10 330 查看
在并行队列中,为了保持某些任务的顺序,需要等待一些任务完成后才能继续进行,使用 barrier 来等待之前任务完成,避免数据竞争等问题。
dispatch_barrier_async
函数会等待追加到Concurrent Dispatch Queue并行队列中的操作全部执行完之后,然后再执行
dispatch_barrier_async
函数追加的处理,等
dispatch_barrier_async
追加的处理执行结束之后,Concurrent Dispatch Queue才恢复之前的动作继续执行。


打个比方:比如你们公司周末跟团旅游,高速休息站上,司机说:大家都去上厕所,速战速决,上完厕所就上高速。超大的公共厕所,大家同时去,程序猿很快就结束了,但程序媛就可能会慢一些,即使你第一个回来,司机也不会出发,司机要等待所有人都回来后,才能出发。
dispatch_barrier_async
函数追加的内容就如同 “上完厕所就上高速”这个动作。


(注意:使用
dispatch_barrier_async
,该函数只能搭配自定义并行队列
dispatch_queue_t
使用。不能使用:
dispatch_get_global_queue
,否则
dispatch_barrier_async
的作用会和
dispatch_async
的作用一模一样。 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: