iOS 开发_GCD函数与队列一、初探
2018-12-21 本文已影响0人
iOS_PM_WEB_尛鹏
【作者前言】: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
- 异步'dispatch_async'
3)队列 调度上都符合FIFO原则(先进先出 ---堆的规则),执行上串行队列依旧可控,并行队列中不一定
①串行队列 --->依次调度,执行结果属于排队规则
image.png
②并行队列 --->并行调度,执行结果属于插队规则, 执行顺序不能把握
image.png