iOS GCD概念介绍

GCD

是苹果提出的多线程并行运算的高效解决方案,GCD能自动利用CPU多个内核,自动管理线程的生命周期;
API一般以dispatch为前缀,例如常用的dispatch_async

任务

GCD中的任务使用block来执行,例如下面代码是创建异步执行一个任务:

dispatch_async(queue, ^{
// block里放异步执行的任务代码
});

队列(Queue)

指执行任务的等待队列,既用来存放任务的队列。
队列是一张特殊的表,采用FIFO(先进先出)的原则,
新任务总是排在队列的末尾,读取任务则是从队列的头部开始。
队列分两种:串行队列并发队列
两者都符合FIFO(先进先出)的原则
两者的区别是:执行顺序不同,开启的线程数不同。

队列分主线程队列和全局并发队列(背景线程队列)
主线程队列
dispatch_queue_t queue = dispatch_get_main_queue();
在主线程中执行的Dispatch Queue,因为主线程只有一个,所以主线程队列是串行队列。
追加到主线程队列的处理在主线程的RunLoop中执行。
全局并发队列
有四个优先级:高优先级、默认优先级、低优先级、后台优先级
dispatch_queue_t queue1 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
优先级越高,代表在全局并发队列中优先执行
参数1:队列优先级
参数2:保留参数,用 0 即可

执行

GCD执行任务有两种方式:同步执行异步执行
两者的区别是:是否等待队列的任务执行结束,是否开启新的线程
同步执行调用dispatch_sync方法
异步执行调用dispatch_async方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容