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

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

GCD(Grand Central Dispatch):

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

是基于C语言的底层API用Block定义任务,使用起来非常灵活便捷提供了更多的控制能力以及操作队列中所不能使用的底层函数GCD的基本思想就是就将操作s放在队列s中去执行

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

队列(FIFO):

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

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

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

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

请看下面四幅图片:                                                                                            

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航