iOS开发之四张图说明GCD(Grand Central Dispatch)附Test源码
首先,先介绍几个概念: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
以上纯属个人理解,水平有限,若有错误欢迎来喷!
iOS开发之四张图说明GCD(Grand Central Dispatch)附Test源码的更多相关文章
- GCD (Grand Central Dispatch) 笔记
GCD (Grand Central Dispatch) 是Apple公司开发的一种技术,它旨在优化多核环境中的并发操作并取代传统多线程的编程模式. 在Mac OS X 10.6和IOS 4.0之后开 ...
- iOS开发-多线程之GCD(Grand Central Dispatch)
Grand Central Dispatch(GCD)是一个强有力的方式取执行多线程任务,不管你在回调的时候是异步或者同步的,可以优化应用程序支持多核心处理器和其他的对称多处理系统的系统.开发使用的过 ...
- 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/19617187 图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS ...
- iOS 中NSOperationQueue,Grand Central Dispatch , Thread的上下关系和区别
In OS X v10.6 and later, operation queues use the libdispatch library (also known as Grand Central D ...
- IOS 多线程编程之Grand Central Dispatch(GCD)介绍和使用 多线程基础和练习
介绍:前面内容源自网络 Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式 ...
- IOS学习之十七:Grand Central Dispatch(GCD)编程基础
IOS学习之十七:Grand Central Dispatch(GCD)编程基础 有过编程经验的人,基本都会接触到多线程这块. 在java中以及Android开发中,大量的后台运行,异步消息队列, ...
- [转] iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首 ...
- iOS 多线程编程之Grand Central Dispatch(GCD)
介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其它的对称多处理系统的系统.这建立在任务并行运行的线程池模式的基础上的. 它 ...
- iOS开发 - 多线程实现方案之GCD篇
GCD概念 GCD为Grand Central Dispatch的缩写,纯c语言编写,是Apple开发的一个多核编程的较新的解决方法.它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统.它是 ...
随机推荐
- Qt Creator Valgrind内存分析前端(分析Nginx内存)
Linux上使用Qt Creator进行C/C++开发http://my.oschina.net/eechen/blog/166969Qt Creator GDB调试前端(调试Nginx):http: ...
- Lowest Common Ancestor in Binary Tree
The problem: Given node P and node Q in a binary tree T. Find out the lowest common ancestor of the ...
- BestCoder Round #52 (div.1)
这周六BC和CF又差点打架,精力不够啊...结果打BC没起来,就看了一眼题跑了...今天早上补补吧,(因为今天晚上还要打UER= =) 先放官方题解: 1000 Victor and Machine ...
- 数据结构(堆):POJ 1442 Black Box
Black Box Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10658 Accepted: 4390 Descri ...
- Android 屏幕截图
1.同时按下电源键+音量下键截屏 PhoneWindowManager.java private void interceptScreenshotChord() { if (mScreenshotCh ...
- 高效算法——E - 贪心-- 区间覆盖
E - 贪心-- 区间覆盖 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/E 解题思路: 贪心思想, ...
- angularJS $watch $digest $apply
一 简介AngularJS提供了一个非常酷的特性叫做双向数据绑定(Two-way Data Binding),这个特性大大简化了我们的代码编写方式.数据绑定意味着当View中有任何数据发生了变化,那么 ...
- Linux 安全
Linux 安全 1.安装 使系统处于单独(或隔离)的网络中.以防止未受保护的系统连接到其它网络或互联网中受到可能的攻击 安装完成后将下面软件卸载 pump ...
- oracle存储过程含参数的插入数据
create or replace procedure proczipcodebyzipinsert( i_zipcode in zipcode.zip%type, i_city in z ...
- mvc与mvvm
mvc:被动型式的,也就是说,只有view有要求的时候,控制器才有反应 View Controller Model 可以把一个页面看作是由多个view组成 Controller控制 ...