大家都知道GCD 有两种队列:一种是串行队列,一种是并发队列。什么是串行队列?串行队列就是队列中的代码块一个一个按顺序执行,每当上一个代码块执行结束后下一个代码块才会执行。打个比方,如果队列是一些首尾相连的火柴。那么串行队列里,这些火柴只有在前一根火柴燃烧殆尽之后自己才会燃烧。而并发队列则不是这样,并发队列也是一队火柴,但是这些火柴在工作时会被一根一根自前向后地点燃,不用等待前一根火柴燃尽。但是要注意的是,并发队列也是一个队列,尽管他可以使多个代码块同时执行,但是它也会有一个启动顺序,这个顺序也是一个自前向后的顺序。所以当每个代码块的时间花费足够小的话,并发队列的结果也就近似于串行队列了。

那么什么是dispatch_async和dispatch_sync呢。我将dispatch_async和dispatch_sync理解为一种入队时的一种动作。前者是在入队时不需要等待队列结果的,而后者需要等待队列的反馈结果。同样还是拿火柴打个比方,如果说还是把队列比作一队火柴,那么dispatch_async则是将需要入队的火柴一根一根直接放在队列里,它不要知道队列是否已经到了最后一个。而dispatch_sync,则是等队列燃烧尽了再向队列里放火柴。如果我手里有10根火柴,dispatch_async是将10根火柴直接放进队列里。而dispatch_sync则是在队列快熄灭的时候放进一根,其余9根还在我的手里。

GCD的一点理解的更多相关文章

  1. GCD的深入理解

    GCD 深入理解(一) 本文由@nixzhu翻译至raywenderlich的<grand-central-dispatch-in-depth-part-1> 虽然 GCD 已经出现过一段 ...

  2. opencv笔记5:频域和空域的一点理解

    time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...

  3. 对socket的一点理解笔记

    需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...

  4. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  5. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  6. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  7. RxSwift 入坑好多天 - 终于有了一点理解

    一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...

  8. rt-thread中动态内存分配之小内存管理模块方法的一点理解

    @2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...

  9. rt-thread中软件定时器组件超时界限的一点理解

    @2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...

随机推荐

  1. Intersoft Mobile Studio 2013 R1 SP1 Crack

    Intersoft Mobile Studio 2013 R1 SP1 (iOS, Android & WinR) Leave a comment   tweet       inShare ...

  2. linux命令 cp 递归复制 带权限复制

    cp -r 递归复制源目录下所有文件及子目录 到 目标目录或文件 cp -p 把源文件或目录下的所具有的权限一同复制 到 目标目录或文件

  3. Bzoj 3747: [POI2015]Kinoman 线段树

    3747: [POI2015]Kinoman Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 553  Solved: 222[Submit][Stat ...

  4. oracle删除当前用户下所有表

    1.如果有删除用户的权限,则可以: drop user user_name cascade; 加了cascade就可以把用户连带的数据全部删掉. 删除后再创建该用户.--创建管理员用户create u ...

  5. 是C太傻逼?还是C++不够傻逼;

    1,类对象宏object-like macro,类函数宏macro中不允许有空格,名称遵循变量名命名规则; 同样是笔记,顺序条理无,看管随意,意在与神会,不解释则会意此为深,随意则会意此乃为度...望 ...

  6. java.util.concurrent 包笔记 --- BlockingQueue

    BlockingQueue 队列接口,具有 4 组不同的方法用于插入.移除以及对队列中的元素进行检查.如果请求的操作不能得到立即执行的话,每个方法的表现也不同.这些方法如下:   Throws exc ...

  7. JAVA 面向对象-2-继承(Inheritance)

    i.继承(Inheritance) 1.继承的概念 继承:在面向对象编程的过程中,通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类. 继承是面向对象编程最重要的特征之一. 继承的优点:1 ...

  8. FragmentStatePagerAdapter.notifyDataSetChanged不刷新页面的解决的方法

    公司做医疗产品的,显示操作用的是android.所以我就用上下两个部分大致是固定的,仅仅有中间会有6个页面的切换,当中会有两个用户的切换.即普通用户和管理员用户,图片能够大致展示一下 其他页面是同样的 ...

  9. [CSS] Targeting Elements with CSS Attribute Selectors

    Beyond classes and IDs CSS also provides selectors to target element based on their attributes. In t ...

  10. careercup-链表 2.2

    2.2 实现一个算法,找到单链表中倒数第k个节点. 这道题的考点在于我们怎么在一个单链表中找到倒数第n个元素? 由于是单链表,所以我们没办法从最后一个元素数起,然后数n个得到答案. 但这种最直观的思路 ...