Runloop与线程

Runloop 解决了什么问题

线程如果只是“执行完就退出”,无法承载长期事件处理。Runloop 的作用是让线程在有任务时处理任务、没任务时休眠等待,从而降低 CPU 空转。

基本组成

一个 Runloop 主要包含:

  • Source:输入源(触摸、端口、自定义事件)
  • Timer:定时任务
  • Observer:状态监听
  • Mode:一次循环只在一个 mode 下运行

主线程 Runloop 的意义

主线程依赖 Runloop 处理:

  • 触摸事件
  • UI 刷新
  • 定时器回调
  • 网络回调派发

主线程卡顿本质上是 Runloop 在一个周期里被长任务阻塞。

常见实践

  • 后台线程需要常驻时,手动启动 Runloop。
  • 定时器放错 mode 会出现滚动时不触发。
  • 监控卡顿可通过 Runloop 状态切换超时检测实现。

调优建议

  • 把耗时任务移出主线程。
  • 主线程只做 UI 与轻逻辑。
  • 对高频定时器做合并与降频。

总结

Runloop 是 iOS 线程模型的核心抽象。理解它,才能解释线程常驻、事件派发和卡顿监控这些工程问题。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""