重点:队列的概念,不同队列各自的用途,优先级
相关概念
- CGD:Grand Central Dispatch,一个线程调度中心,将线程串联或者并发的传给CPU,让其执行。解决了之前多线程CPU被闲置等的问题。
- 线程:CPU可调度的一个任务。
特点
GCD有串行和并发两种队列
- 串行就是先后执行;
- 并发就是同时完成两个或多个事件;
GCD队列的三种类型:
- 系统创建–主队列:调用主线程,更新UI;全局队列:有优先级(平时用0就可以),除了自己的任务也会包含系统级别任务;
- 手动创建–自定义队列:
使用(代码示例):
用自己创建的队列来做
ps:学习苹果标准注释,并且要看懂那些注释。
GCD的一些方法:
- 延迟,主要放在主队列中运行:
- 重复(并发次数多了自然会增加系统开销,多循环可用for):主要用于耗时、重复少的并发队列中时提升性能,改善用户体验。同步,会阻塞主线程
这样就不会阻塞主线程了
异步加载两张图片:
- 调度组(加载两张图片):
(notify异步)
用了三个方法实现两个图片加载,并在完成时出现加载完毕提示:
(wait同步):并发操作数据库时候,只有数据操作完成之后才能继续防止出错
队列的暂停和恢复ps: 如果已经把任务加载到队列中不能暂停。
这样修改——延迟两秒,将调度组写到延迟的闭包里
参考文献:
http://lyjh.net/2015/09/27/iOS%E5%A4%9A%E7%BA%BF%E7%A8%8BGCD%E8%AF%A6%E8%A7%A3/。
https://github.com/nixzhu/dev-blog/blob/master/2014-04-19-grand-central-dispatch-in-depth-part-1.md
以及其他网上资源
深表感谢!