GCD的一点理解
来源:互联网 发布:万能数据库注册 编辑:程序博客网 时间:2024/06/04 17:53
大家都知道GCD 有两种队列:一种是串行队列,一种是并发队列。什么是串行队列?串行队列就是队列中的代码块一个一个按顺序执行,每当上一个代码块执行结束后下一个代码块才会执行。打个比方,如果队列是一些首尾相连的火柴。那么串行队列里,这些火柴只有在前一根火柴燃烧殆尽之后自己才会燃烧。而并发队列则不是这样,并发队列也是一队火柴,但是这些火柴在工作时会被一根一根自前向后地点燃,不用等待前一根火柴燃尽。但是要注意的是,并发队列也是一个队列,尽管他可以使多个代码块同时执行,但是它也会有一个启动顺序,这个顺序也是一个自前向后的顺序。所以当每个代码块的时间花费足够小的话,并发队列的结果也就近似于串行队列了。
那么什么是dispatch_async和dispatch_sync呢。我将dispatch_async和dispatch_sync理解为一种入队时的一种动作。前者是在入队时不需要等待队列结果的,而后者需要等待队列的反馈结果。同样还是拿火柴打个比方,如果说还是把队列比作一队火柴,那么dispatch_async则是将需要入队的火柴一根一根直接放在队列里,它不要知道队列是否已经到了最后一个。而dispatch_sync,则是等队列燃烧尽了再向队列里放火柴。如果我手里有10根火柴,dispatch_async是将10根火柴直接放进队列里。而dispatch_sync则是在队列快熄灭的时候放进一根,其余9根还在我的手里。
0 0
- GCD的一点理解
- GCD的一点理解
- IOS-GCD的一点认识
- GCD的一点小补充
- 关于GCD中同步函数+主队列产生死锁的一点理解
- GCD 的简单理解
- GCD--我的理解
- GCD的理解
- GCD 的理解
- GCD的深入理解
- GCD的理解
- GCD死锁的理解
- 针对GCD的理解
- Ajax的一点理解
- Cygwin的一点理解
- UIWebView 的一点理解
- MEF的一点理解
- QThread的一点理解
- java.util.concurrent 用法实例详解 -中的java源码
- Lisp学习笔记(四)
- linux设备驱动开发范例,linux驱动例子,Linux设备驱动详解范例example 宋宝华版的光盘驱动源码,实测编译通过入门学习用
- iOS 开发 AutoLayout SizeClass
- 【ExtJS】自定义int类型值的datefield
- GCD的一点理解
- Android模拟器相关
- android java.net.UnknownHostException:
- rabbitmq(3)
- form用js来提交,需注意
- reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object' 错误
- android string.xml 添加特殊字符
- [UBOOT]uboot的relocation原理详细分析
- 动态规划问题