/-------------注意----------------
这篇文章是在Swift 1.0时代写的,已经不适合当前的语法。关于Swift最新版本的GCD,参见我的这篇博客
/-------------注意----------------
为什么要写这个系列,因为百度了一下,找了很多都是些片面的Blog,拷贝来拷贝去的,写的也很粗糙。
所以,我要写这个系列,尽量把官网文档中GCD的强大功能完整的表达出来。方便自己,也方便别人,如果发现有问题,欢迎提出
所以,决定开一个专栏来写这个教程。计划8篇文章,分别介绍各种功能,每种功能会附上简单完整的示例代码。最后
的一篇文章会进行总结,总结出GCD的经典使用场景。源代码只提供Swift版本。因为要上班,计划一个月内完成。每周两篇。
原创Blog,转载请注明出处
这个专栏地址
http://blog.csdn.net/column/details/swift-gcd.html
GCD
全称:Grand Central Dispatch
简介: GCD是对多线程、多核开发较完整的封装。在使用GCD的时候,系统会自动根据CPU使用情况进行调度,所以GCD是
一个简单易用,但是效果很好地多线程多核开发工具。
要注意的地方:
1、慎用fork()函数(不是十分清楚流程不要用)
2、GCD是C语言级别的API,所以不会抓到异常,在一个提交到GCD的任务完成之前,应当处理完异常。
教程一
教程一涵盖了
1、GCD全局队列的四个优先级
2、几种本文使用到的GCD类型
3、dispatch_async/dispatch_async_f
4、dispatch_sync/dispatch_sync_f
一、概念与类型
对于GCD来说,所有的执行都放到队列中(queue),队列的特点是FIFO(先提交的先执行)。
GCD的队列分为几种,主队列(main),全局队列(global),用户创建队列(create)
对于全局队列,默认有四个,分为四个优先级
#define DISPATCH_QUEUE_PRIORITY_HIGH 2
#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
#define DISPATCH_QUEUE_PRIORITY_LOW (-2)
#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN
DISPATCH_QUEUE_PRIORITY_HIGH :优先级最高,在default,和low之前执行
DISPATCH_QUEUE_PRIORITY_DEFAULT