GCD(一)
来源:互联网 发布:sas数据分析大赛试题 编辑:程序博客网 时间:2024/06/05 16:55
GCD(Grand Central Dispatch)是从OS X Snow Leopard和iOS 4开始引入的新一代的多线程编程技术。开发者只需定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并有计划的执行任务。并且由于线程管理是作为系统的一部分来实现的,因此系统可以统一管理,它会决定什么时候创建新线程,创建哪些新线程,多个任务是顺序执行还是并发执行。这样就比以前的线程编程更有效率。
dispatch_async(queue, ^{ // dispatch_async是异步方法。长时间处理,例如数据库访问 dispatch_async(dispatch_get_main_queue(), ^{ // 到主线程队列中执行 // 例如界面更新 });});
Dispatch Queue(调度队列)
使用GCD进行编程,开发者要做的只是定义想执行的任务并追加到适当的Dispatch Queue中。其中,“定义想执行的任务”使用Block语法来完成。Dispatch Queue中的任务按照FIFO的顺序进行处理,也就是先进入的任务先处理。另外,Dispatch Queue分为串行和并发两种。
Serial Dispatch Queue要求等待正在执行的任务完成,再执行下一个。而Concurrent Dispatch Queue中后面的任务可以不必等待正在执行的任务执行完成就可以开始执行,也就是同时可以执行多个任务。换句话说,其实就是Serial Dispatch Queue只会创建一个线程来执行任务,而Concurrent Dispatch Queue会创建多个线程同时执行多个任务。
对于Concurrent Dispatch Queue,OS X和iOS的XNU内核会基于Dispatch Queue中的任务数量、CPU核数和CPU负荷等当前系统状态来决定创建多少个线程和并行执行多少个任务。
一般情况下:如果要求在不能改变执行顺序或不想并行执行多个任务时使用Serial Dispatch Queue。
简言之:Serial Dispatch Queue串行代码;Concurrent Dispatch Queue并行代码。
- GCD(一)
- GCD(一)
- GCD 多线程(一)
- GCD 多线程(一)
- iOS--GCD(一)
- Swift之GCD(一)
- GCD 深入理解一
- GCD block(一)
- GCD block(一)
- GCD理解(一)
- GCD入门介绍一
- 深入理解GCD(一)
- GCD简单使用一
- iOS GCD(一)
- gcd学习(一)
- GCD(一)dispatch_source_t
- GCD 使用总结(一)
- GCD教程(一):基本概念
- DWZ手册补充说明
- 【Android】 Android开发优化之——对界面UI的优化(1)
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- VIM入门
- GCD(一)
- 黑马程序员——01Java基本数据类型小知识点
- 获得CODE39检查码的几个步骤及特性综合说明
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【Android】 Android开发优化之——对界面UI的优化(2)
- VideoView大小屏幕切换的总结
- 移植 tiny210 的按键驱动
- window下工具访问linux下mysql出现 error no 2003 10061错误的解决办法
- C++资源管理————————在资源管理类中小心copying行为