OC开发_整理笔记——多线程之GCD
一、进程和线程

二、各种队列!
1、GCD:Grand Central Dispatch
2、串行队列(Serial)
3、并行队列(Concurrent)
4、主调度队列(main dispatch queue)
三、队列的任务处理
1、串行队列(✅DISPATCH_QUEUE_SERIAL)的同步任务和异步任务:dispatch_sync 和 dispatch_async

#串行同步执行结果:不会创建新线程,按照 顺序执行

#串行异步执行结果:创建了一个新线程,但是依然按照 顺序执行

#串行先执行异步,再执行同步的结果:发现同步一直是在主线程,但也是先让异步的执行完再来执行同步的,
从而说明一个串行队列是顺序执行的,但是也不影响主线程的操作

2、并行队列(✅DISPATCH_QUEUE_CONCURRENT)的同步任务和异步任务:dispatch_sync 和 dispatch_async

#并行同步执行结果:不会创建新线程,按照 顺序执行[同串行同步]
#并行异步执行结果:会新建多个线程、操作无序执行(有⽤,容易出错!)队列前如果有其他任务,会等待前面的任务完成之后再执⾏
场景:既不影响主线程,又不需要顺序执⾏行的操作!

#并行先执行同步,再执行异步的结果:发现同步执行完才会执行异步
#并行先执行异步,再执行同步的结果:顺序已经完全各种乱入了!

3、全局队列(DISPATCH_QUEUE_PRIORITY_DEFAULT):开发中用这个就对了dispatch_get_global_queue

#全局队列先执行同步,再执行异步的结果:实际上结果是和并列的都一样的效果

4、主线程队列:dispatch_get_main_queue[主队列中添加的同步操作永远不会被执⾏行,会死锁]

四、嵌套同步任务
1、在串行队列中嵌套多一个同步任务,会造成阻塞!!

五、小结一下
1、并行和串行的任务调度的区别

OC开发_整理笔记——多线程之GCD的更多相关文章
- OC开发_整理笔记——友盟分享(社交化组件)
0.友盟的地址 http://dev.umeng.com,进入友盟,在使用友盟之前我们需要注册账号获取key (1 进入我们的产品,添加新应用 (2 输入信息,然后就会获取到key 1.选择社会化分 ...
- iOS多线程之GCD小记
iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...
- iOS多线程之GCD、OperationQueue 对比和实践记录
[toc] 简介 在计算的早期,计算机可以执行的最大工作量是由 CPU 的时钟速度决定的.但是随着技术的进步和处理器设计的紧凑化,热量和其他物理约束开始限制处理器的最大时钟速度.因此,芯片制 ...
- Python开发【整理笔记】
回顾笔记 学python半年,新知识不断填充,之前学的东西也忘的差不多,整理下笔记,把重点再加深下印象,算是读书拾遗吧.... 1.类继承.新式类.经典类 首先,新式类.经典类的概念只存在于Pytho ...
- iOS开发-多线程之GCD(Grand Central Dispatch)
Grand Central Dispatch(GCD)是一个强有力的方式取执行多线程任务,不管你在回调的时候是异步或者同步的,可以优化应用程序支持多核心处理器和其他的对称多处理系统的系统.开发使用的过 ...
- OC开发_代码片段——使用Xib自定义tableViewCell
一.实现步骤 1.新建一个XIB文件:描述cell——tableCell.xib 2.新建UITableViewCell的子类,也就是cell文件:封装XIB内部的所有东西——TestCell.m \ ...
- Navsion二次开发_学习笔记
CodeUnit Note This feature is documented in the Navision Application Server Technical White Paper. ...
- iOS多线程之GCD学习笔记
什么是GCD 1.全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 2.纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 G ...
- iOS开发多线程之GCD
Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到适当的Dispatch Que ...
随机推荐
- 将Unity导出的Eclipse工程转换为AndroidStudio工程
步骤:1)将unity项目导出到文件夹: 转换到安卓平台,这里只勾选google android project.然后导出到自己新建的文件夹. 2)打开导出的文件夹,看到如下内容.这是unity5.x ...
- Eclipse------启动Server时出现弹窗Server at localhost was unable to start within 45 seconds.
弹窗详细信息: Server Tomcat v8. Server at localhost was unable to start within seconds. If the server requ ...
- C#------Aspose的License文件
Aspose官网: https://docs.aspose.com/display/cellsnet/Home 下载地址: http://vdisk.weibo.com/s/uoya0tRiZNf0X ...
- 8 -- 深入使用Spring -- 2...6 Spring 4.0 增强的自动装配和精确装配
8.2.6 Spring 4.0 增强的自动装配和精确装配 Spring提供了@Autowired 注解来指定自动装配,@Autowired可以修饰setter方法.普通方法.实例变量和构造器等.当使 ...
- 九度 1552 座位问题(递推DP)
题目描述: 计算机学院的男生和女生共n个人要坐成一排玩游戏,因为计算机的女生都非常害羞,男生又很主动,所以活动的组织者要求在任何时候,一个女生的左边或者右边至少有一个女生,即每个女生均不会只与男生相邻 ...
- js实现点击评论进行显示回复框
有人在群里问如何在留言评论那里点击回复按钮,下面就自动显示一个回复框,他想要的效果如图: 于是我随意的写了一段HTML,代码如下: <!DOCTYPE HTML> <html lan ...
- ios开发之--开发中可能会用到的一些函数
rand() ----随机数 abs() / labs() ----整数绝对值 fabs() / fabsf() / fabsl() ----浮点数绝对值 floor() / floorf() / f ...
- xml文件的序列化示例
1.创建activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr ...
- Data Guard启动实时日志应用
1. REDO数据实时应用 启动实时应用的优势在于,REDO数据不需要等待归档完成,接收到即可被应用,这样执行角色切换时,操作能够执行得更快,因为日志是被即时应用的. 要启动实时应用也简单,前提是St ...
- python3.4连接和读取oracle数据表
想用python连接Oracle并查询数据表,就写了个Demo.参考了以下网址. Python学习之 cx_Oracle学习记录 一 http://my.oschina.net/bxxfighting ...