开发者社区> 问答> 正文

对于那些分析出来没必要在启动阶段执行的方法,可以做任务延后的处理,那该怎么做呢?

已解决

对于那些分析出来没必要在启动阶段执行的方法,可以做任务延后的处理,那该怎么做呢?

展开
收起
胡嘞嘞 2022-07-06 15:24:00 330 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    创建四个队列,分别是:

    • 异步串行队列
    • 异步并行队列
    • 闲时主线程串行队列
    • 闲时异步串行队列

    有依赖关系的任务可以放到异步串行队列中执行。异步并行队列可以分组执行,比如使用dispatch_group,然后对每组任务数量进行限制,避免CPU、线程和内存瞬时激增影响主线程用户操作,定义有限数量的串行队列,每个串行队列做特定的事情,这样也能够避免性能消耗短时间突然暴涨引起无法响应用户操作。使用dispatch_semaphore_t 在信号量阻塞主队列时容易出现优先级反转,需要减少使用,确保QoS 传播。可以用dispatch group 替代,性能一样,功能不差。异步编程可以直接GCD 接口来写,也可以使用阿里的协程框架。闲时队列实现方式是监听主线程runloop 状态, 在kCFRunLoopBeforeWaiting 时开始执行闲时队列里的任务,在kCFRunLoopAfterWaiting 时停止。

    以上内容摘自《高德技术2020年刊合集》电子书,点击https://developer.aliyun.com/topic/download?id=1135可下载完成版

    2022-07-06 15:56:47
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
十分钟上线-使用函数计算构建支付宝小程序服务 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载

相关实验场景

更多