【HarmonyOS NEXT】ArkTS 线程模型解析与使用

1. 前置学习文档

2. 前言

在了解 ArkTS 线程模型之前,先了解几组易混淆的概念。

2.1 名词解释

  • 进程(Process):进程是系统资源分配和调度的单元。一个运行着的程序就对应了一个进程。一个进程包括了运行中的程序和程序所使用到的内存和系统资源。

    • 目前HarmonyOS 当前不支持手动创建进程;应用中(同一Bundle名称)的所有UIAbility、ServiceExtensionAbility和DataShareExtensionAbility 等其它Ability均是运行在同一个独立进程(主进程)中;
    • 关于HarmonyOS中的进程模型,可点击这里阅读:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/process-model-stage-V13​
      线程(Thread):线程是进程下的执行者,一个进程至少开启一个线程(主线程),也可以开启多个线程。
  • **线程(Thread):**线程是进程下的执行者,一个进程至少开启一个线程(主线程),也可以开启多个线程。

    并行和并发的概念:

    • 并行(Parallelism):指程序的运行状态,在同一时间内有几件事情并行在处理。由于一个线程在同一时间只能处理一件事情,所以并行需要多个线程在同一时间执行多件事情。​
    • 并发(Concurrency):指程序的设计结构,在同一时间内多件事情能被交替地处理。重点是,在某个时间内只有一件事情在执行。比如单核 CPU 能实现多任务运行的过程就是并发。
      阻塞和非阻塞的概念:
    • 阻塞(Blocking):阻塞是指调用在等待的过程中线程被挂起(CPU 资源被分配到其他地方去)
    • 非阻塞(Non-blocking):非阻塞是指等待的过程 handlerCPU 资源还在该线程中,线程还能做其他的事情

    再来区分单线程和多线程的区别:

    • 单线程:从头执行到尾,逐行执行,如果其中一行代码报错,那么剩下代码将不再执行。同时容易代码阻塞。
    • 多线程:代码运行的环境不同,各线程独立,互不影响,避免阻塞。

    同步与异步的概念:

    • 同步(Synchronous):程序发出调用的时候,一直等待直到返回结果,没有结果之前不会返回。也就是,同步时调用者主动等待调用过程,且能立即得到结果的。​
    • 异步(Asynchronous):程序发出调用之后,无法立即得到结果,需要额外的操作才能得到预期的结果是为异步。

2.2 ArkTS 运行环境

  ArkCompiler eTS Runtime,类似于 Java 中的执行引擎 JVM【负责 Java 字节码的解析和执行】,Chrome Webkit 中 JavaScript 的执行引擎 V8 引擎【负责 JavaScript 代码的解析和执行】。

  它的大致流程就是先通过 ArkCompiler 将 ArkTS/TS/JS 程序预先静态编译为方舟字节码,在真机上使用 ets_runtime 运行方舟字节码【负责 ArkTS 字节码的解析和执行】。

3. 线程模型

本文涉及到的线程模型主要是基于官方的应用模型>Stage 模型。更多应用模型可点击这里:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/application-models-V13

3.1 概述

Stage 模型下的线程主要有如下三类:

  • 主线程

    • 执行 UI 绘制。
    • 管理主线程的 ArkTS 引擎实例,使多个 UIAbility 组件能够运行在其之上。
    • 管理其他线程的 ArkTS 引擎实例,例如使用 TaskPool(任务池)创建任务或取消任务、启动和终止 Worker 线程。
    • 分发交互事件。
    • 处理应用代码的回调,包括事件处理和生命周期管理。
    • 接收 TaskPool 以及 Worker 线程发送的消息。
  • TaskPool Worker线程

    • 用于执行耗时操作,支持设置调度优先级、负载均衡等功能,推荐使用。
  • Worker线程

    • 用于执行耗时操作,支持线程间通信。
      TaskPool与Worker的运作机制、通信手段和使用方法可以参考TaskPool和Worker的对比。

3.2 Stage 模型>主线程

  从上述资料中,我们不难发现 ArkTS 的线程机制还是依托于 JavaScript 来实现的。而** JavaScript 是一门单线程语言**,所谓单线程,是指在 JS 引擎中负责解释和执行 JavaScript 代码的线程只有一个。不妨叫它主线程

  但是实际上还存在其他的线程。例如:处理 Http 网络请求的线程、处理 UI 事件的线程、定时器线程、读写文件的线程等等。这些线程可能存在于 JS 引擎之内,也可能存在于 JS 引擎之外,在此我们不做区分。不妨叫它们工作线程

3.3 同步与异步

  既然 js 是单线程,那么只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,为了解决这个问题,JavaScript 语言将任务的执行模式分为两种:同步和异步。

3.3.1 同步

假设存在一个函数 A:

function A(args...);

  如果在函数 A 返回的时候,调用者就能够得到预期结果(即拿到了预期的返回值或者看到了预期的效果),那么这个函数就是同步的。

例如:

let number=Math.abs(-666)
console.log(number)
<think>嗯,用户问的是鸿蒙OS 3.0和鸿蒙星河版本在开发工作方面的主要更新点。首先,我需要确认这两个版本的区别,可能用户是开发者,想了解新特性以便适配或利用新功能。 鸿蒙OS 3.0我记得是在2022年发布的,重点可能在分布式能力、性能优化和开发工具上。而鸿蒙星河版,也就是HarmonyOS NEXT,可能更强调内核和生态系统,特别是完全的自研架构。需要分开说明两者的不同。 首先,鸿蒙OS 3.0的更新点。分布式能力方面,超级终端应该更灵活,设备协同更高效,比如多设备互连的低延迟。开发者可能需要调整他们的应用以支持更多设备类型。然后是原子化服务,或许有新的服务组合方式,比如一次开发多端部署,这涉及到ArkUI的声明式开发,可能简化代码。性能部分,方舟编译器可能优化了启动速度和内存管理,开发者需要注意资源调度API的变化。还有安全方面,增强的数据保护和权限管理,可能涉及新的API调用。 接下来是鸿蒙星河版,也就是NEXT版本。这个版本可能完全去除了Linux内核,使用自研的鸿蒙内核,这对开发者来说可能需要适配新的系统调用和底层接口。生态系统方面,可能只支持原生应用,不再兼容安卓APK,这会带来较大的迁移成本,需要重写部分代码。开发工具方面,DevEco Studio可能有升级,比如更强大的模拟器或调试工具,支持新的API。AI集成可能更深入,比如大模型支持,开发者需要学习如何集成AI功能到应用中。还有一次开发多端部署的强化,可能支持更多设备,需要优化UI适配。 用户作为开发者,可能关心如何迁移现有应用到新版本,或者如何利用新特性提升应用性能。需要提醒他们注意鸿蒙星河版不兼容安卓,可能需要重新开发。同时,新的开发工具和分布式能力可能带来效率提升,但需要学习成本。 需要确保回答结构清晰,分版本介绍,每个版本的更新点分模块说明,如分布式能力、性能、开发工具等。还要注意使用中文,术语准确,比如ArkUI、方舟编译器、DevEco Studio等。可能还需要对比两个版本的差异,帮助开发者理解升级路径。 最后,检查是否符合用户的需求,是否覆盖了开发工作中的主要方面,比如API变化、工具更新、兼容性问题、性能优化等。确保信息准确,比如鸿蒙内核的自研情况,以及NEXT版本是否真的不再支持安卓应用。</think>鸿蒙OS 3.0鸿蒙星河版(HarmonyOS NEXT)的更新对开发工作的影响主要体现在以下方面,分版本解析如下: --- ### 一、鸿蒙OS 3.0 主要开发更新 #### 1. **分布式能力升级** - **超级终端灵活组网** 支持更多设备类型(手机、平板、PC、IoT)无缝协同,开发者需通过 **分布式软总线** 接口实现低延迟(<20ms)跨设备通信。 - **原子化服务增强** 支持服务自由组合跨端流转,需使用 **ArkUI** 声明式语法开发统一组件,例如: ```javascript // 示例:ArkUI声明式布局 @Entry @Component struct ServiceCard { build() { Column() { Text('原子化服务').fontSize(20) Button('启动').onClick(() => {}) } } } ``` #### 2. **性能优化** - **方舟编译器3.0** 应用启动速度提升15%,内存占用降低20%,需配合 **ArkTS** 语言特性(如静态类型检查)进行代码优化。 - **异构资源调度** 新增API支持动态分配算力资源(CPU/GPU/NPU),需适配多线程任务调度策略。 #### 3. **开发工具链** - **DevEco Studio 3.0** 增强跨设备模拟器(支持同时调试多设备协同场景),集成 **HiChecker** 性能分析工具。 --- ### 二、鸿蒙星河版(HarmonyOS NEXT)核心变革 #### 1. **全栈自研架构** - **纯鸿蒙内核** 完全移除Linux内核AOSP代码,开发者需重构依赖安卓API的模块(如JNI调用)。 - **全新原生应用生态** 仅支持鸿蒙应用(.hap包),需使用 **ArkTS/ArkUI** 替代Java/Kotlin开发。 #### 2. **开发范式升级** - **一次开发多端部署强化** 新增自适应布局模板动态响应式接口,例如: $$ \text{布局适配公式:} \quad W_{effective} = \frac{W_{device}}{N_{columns}} $$ - **AI集成开发** 内置大模型接口(如盘古NLP),可直接调用AI能力: ```javascript // 示例:调用AI生成文本 let result = ai.generateText({ prompt: "用户评论分析..." }); ``` #### 3. **工具链调试** - **DevEco Studio NEXT** 新增鸿蒙内核调试模块,支持系统级性能跟踪(如内核事件采样)。 --- ### 三、开发适配建议 1. **鸿蒙OS 3.0** - 优先优化分布式场景兼容性 - 使用ArkTS重构高频计算模块 2. **鸿蒙星河版** - 彻底迁移安卓依赖代码 - 学习纯鸿蒙内核特性(如确定性时延调度) --- **总结**:鸿蒙OS 3.0侧重完善分布式生态性能调优,而星河版推动彻底自主化,开发者需关注底层重构鸿蒙应用开发范式的转型。建议通过[华为开发者联盟](https://developer.harmonyos.com)获取最新SDK设计规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冉冉同学_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值