前言

在接触了同步代码与异步代码后,容易对两种代码的执行产生疑问,本文通过线程对同步与异步代码的执行进行了简单的描述。


ArkTS 线程基础

ArkTS 是 HarmonyOS 开发中使用的编程语言,基于 TypeScript 扩展而来。线程管理在 ArkTS 中主要通过 TaskPoolWorker 模块实现(性能方面TaskPool优于Worker,推荐在大多数场景中使用TaskPool。),用于处理耗时任务,避免阻塞主线程(UI 线程)。

主线程

  1. 执行UI绘制
  2. 管理主线程的ArkTS引擎实例,使多个UIAbility组件能够运行在其之上。
  3. 管理其他线程的ArkTS引擎实例,例如使用TaskPool(任务池)创建任务或取消任务、启动和终止Worker线程。
  4. 分发交互事件。
  5. 处理应用代码的回调,包括事件处理和生命周期管理。
  6. 接收TaskPool以及Worker线程发送的消息。
    ArkTS 主线程(单线程)采用 事件循环(Event Loop) 机制,顺序处理任务队列中的事件(类似 JavaScript),避免多线程并发操作 UI 的复杂性。
    为了规避阻塞风险,耗时操作(如复杂计算、同步 I/O、网络请求)会分配到TaskPool与Worker线程中运行(非主线程不能操作UI

代码执行

按照代码的书写顺序依次扫描并执行代码
在这里插入图片描述

TaskPool 线程池

TaskPool 是轻量级线程池,适合执行短期、无依赖的并行任务。任务执行后自动回收资源。(TaskPool偏向独立任务维度)

TaskPool运作机制示意图TaskPool运作机制示意图

Worker 长期线程

Worker 适合长时间运行的任务,拥有独立上下文,与主线程通过消息通信。(Worker偏向线程的维度)
Worker运作机制示意图
Worker运作机制示意图

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐