iOS开发之四张图说明GCD(Grand Central Dispatch)附Test源码_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS开发之四张图说明GCD(Grand Central Dispatch)附Test源码

iOS开发之四张图说明GCD(Grand Central Dispatch)附Test源码

 2014/4/23 23:31:47  求真求道  博客园  我要评论(0)
  • 摘要:首先,先介绍几个概念:GCD,队列,串行,并行,同步,异步。                                    
  • 标签:iOS 源码 开发

首先,先介绍几个概念:GCD,队列,串行,并行,同步异步。                                                                       

GCD(Grand Central Dispatch):

伟大的苹果公司开发的一种多核线程的解决方案。

    • 是基于C语言的底层API
    • 用Block定义任务,使用起来非常灵活便捷
    • 提供了更多的控制能力以及操作队列中所不能使用的底层函数

GCD的基本思想就是就将操作s放在队列s中去执行

  • 操作使用Blocks定义
  • 队列负责调度任务执行所在的线程以及具体的执行时间
  • 队列的特点是先进先出(FIFO)的,新添加至对列的操作都会排在队尾
  • GCD的函数都是以dispatch(分派、调度)开头的

队列(FIFO):

队列是一种先进先出的组织方式,我看到最搞笑也很形象的解释是:(队列和栈的区别:吃多了拉是队列,吃多了吐是栈)。

  • 串行队列,队列中的任务只会顺序执行
  • 并行队列,队列中的任务通常会并发执行

串行和并行的概念若还是不清楚的,我再举个例子:有10个人在超市买完东西同时到一个收银点排队依次结帐走人,前一个结帐操作不完成,后一个就得等着。这就是典型的串行。10个人去不同的10个收银点同时结帐,谁先结完帐谁就先走。这就是并行。还是不明白的话请看下面例子。

同步和异步(更具体的请看百科)

  • 异步操作(dispatch_async) ,会并发执行,无法确定任务的执行顺序
  • 同步操作(dispatch_sync),会依次顺序执行,能够决定任务的执行顺序

请看下面四幅图片:                                                                                            

1

 

 

 

2

 

 

 

 

 

3

 

 

4

 

 

 

请注意:在并行队列中,异步任务的位置是没有意义的,即不管不放在什么位置,都会并发的去执行!

测试源码链接:http://pan.baidu.com/s/1bnCd8HT

以上纯属个人理解,水平有限,若有错误欢迎来喷!

上一篇: 大道甚夷,而人好径 下一篇: 没有下一篇了!
发表评论
用户名: 匿名