GCD

GCD的好处:

1.GCD是基于C语言的封装3,充分利用了CPU的多核心,节省内存

2.自动管理线程的生命周期(创建线程、调度任务、销毁线程),不需要程序员手动管理

3.程序员只需要告诉GCD需要执行什么任务,不用再编写任何线程管理的代码

任务:放到线程中,需要执行的那段代码

1.同步:不具备开启线程的能力,只能在当前线程执行任务

2.异步:具备开启线程的能力,可以开启其它线程执行任务

队列:执行任务时遵行先进先出的原则

1.并行:可以开启多个线程,执行多个并发任务,但是只能在异步函数中有效

2.串行:让任务一个接着一个的执行

GCD线程之间的通讯

通常情况下,我们是在主线程里进行UI刷新、点击、拖拽、滚动等操作,然后把以一些耗时操作放到其它线程,当其它线程完成了操作,就回到了主线程,那么就用到了线程之间的通讯。

#pragma mark - 将多个耗时操作加到异步队列中,刷新UI

dispatch_group_async :

将代码块dispatch_block_t block放入队列dispatch_queue_t queue中执行;并和调度组dispatch_group_t group相互关联;如果提交到dispatch_queue_t queue中的block全都执行完毕会调用dispatch_group_notify并且dispatch_group_wait会停止等待;

dispatch_group_enter(group)、dispatch_group_leave(group)

dispatch_group_enter(group):相当于引用计数的+1;

dispatch_group_leave(group) :相当于引用计数的-1;这两个是成对存在的。

dispatch_group_notify:

当group中所有的block操作都完成后才会执行,不会阻塞当前调用线程,如果需要阻塞当前调用线程,可使用dispatch_group_wait(group, DISPATCH_TIME_FOREVER);

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

推荐阅读更多精彩内容

  • 1. GCD简介 什么是GCD呢?我们先来看看百度百科的解释简单了解下概念 引自百度百科:Grand Centra...
    千寻_544f阅读 3,085评论 0 0
  • 我们知道在iOS开发中,一共有四种多线程技术:pthread,NSThread,GCD,NSOperation: ...
    请叫我周小帅阅读 5,351评论 0 1
  • 一、多线程简介: 所谓多线程是指一个 进程 -- process(可以理解为系统中正在运行的一个应用程序)中可以开...
    寻形觅影阅读 4,795评论 0 6
  • 看奇葩说的时候我是感激的,我甚至有点想不明白是什么样的暴击才能使一个人不愿意原谅,直到下凡的导师们的提醒,我才意识...
    艾竹天阅读 3,003评论 0 0
  • 对我而言,即使算上360个喜欢你的春夏秋冬,你还是一个我捉摸不住的陌生人吧。 因为玄的关系,和娇的聊天中,又提起了...
    郑渺阅读 2,548评论 0 0