iOS 开发_GCD函数与队列一、初探

【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!

1.应用场景:

多线程神器---GCD,很多开发的场景中,我们都会使用到。

2.实现目标:

探究GCD,这个平时我们经常会用,但是又不知道为什么的盲区???

3.代码说明:【GCD核心:函数和队列】

1)GCD的简介:

什么是GCD???
GCD--->全称 Grand Central Dispatch(重点在Dispatch。调度!)
纯C语言,提供了非常多而且强大的函数
优势:

①GCD是苹果公司为多核的并行运算提出的解决方案
②GCD会自动利用更多的CPU内核(比如双核、四核)
③GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码。

2)将任务添加到队列,并且指定执行任务的函数
  • 任务使用block封装
  • 任务的block没有参数也没有返回值
  • 执行任务的函数
    • 异步'dispatch_async'
      • 不用等待当前语句执行完毕,就可以执行下一条语句
      • 会开启线程执行block的任务
      • 异步是多线程的代名词
    • 同步'dispatch_sync'
      • 必须等待当前语句执行完毕,才会执行下一天语句
      • 不会开启线程
      • 在当前执行block的任务


        image.png
3)队列 调度上都符合FIFO原则(先进先出 ---堆的规则),执行上串行队列依旧可控,并行队列中不一定

①串行队列 --->依次调度,执行结果属于排队规则


image.png

②并行队列 --->并行调度,执行结果属于插队规则, 执行顺序不能把握


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容