对于那些分析出来没必要在启动阶段执行的方法,可以做任务延后的处理,那该怎么做呢?
创建四个队列,分别是:
有依赖关系的任务可以放到异步串行队列中执行。异步并行队列可以分组执行,比如使用dispatch_group,然后对每组任务数量进行限制,避免CPU、线程和内存瞬时激增影响主线程用户操作,定义有限数量的串行队列,每个串行队列做特定的事情,这样也能够避免性能消耗短时间突然暴涨引起无法响应用户操作。使用dispatch_semaphore_t 在信号量阻塞主队列时容易出现优先级反转,需要减少使用,确保QoS 传播。可以用dispatch group 替代,性能一样,功能不差。异步编程可以直接GCD 接口来写,也可以使用阿里的协程框架。闲时队列实现方式是监听主线程runloop 状态, 在kCFRunLoopBeforeWaiting 时开始执行闲时队列里的任务,在kCFRunLoopAfterWaiting 时停止。
以上内容摘自《高德技术2020年刊合集》电子书,点击https://developer.aliyun.com/topic/download?id=1135可下载完成版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。