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的作用一模一样。 )
相关文章推荐
- 课后作业
- throws和throw抛出异常的使用规则
- DB2 SQL 递归实现多行合并
- 控制kobuki底盘(一)
- 《Android开发技术周报》笔记
- ISCC2012信息安全对抗竞赛题目分析
- 一次打PSU的感触
- 最小生成树
- 进程通信aidl入门
- Qt官方开发环境生成的exe发布方式--使用windeployqt
- 二叉树中相距最远的两个节点之间的距离
- Xenia and Bit Operations 【线段树】
- 多样式cell排列使用
- hdoj--1248--寒冰王座(完全背包)
- 2015年10月--学院招聘会--有感
- 使用express创建自己第一个nodejs程序
- hdoj--1248--寒冰王座(完全背包)
- C#实现对象映射
- 2012年第三届西安电子科技大学网络攻防 大赛暨网络渗透部分通关方案 V2.0
- BZOJ3166 && BZOJ3261 可持久化字典树