GCD--Serial(串行)和Concurrent(并发)、Synchronous(同步)和Asynchronous(异步)

重点:队列的概念,不同队列各自的用途,优先级

相关概念

  • 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
以及其他网上资源
深表感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值