
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
共享模块摘要 共享模块是进程内单例模块,通过"use shared"指令标记。其特点包括: 进程全局唯一,不同线程共享同一实例 需与"use strict"一起写在文件顶部 仅支持ets文件,导出对象必须可共享 禁止直接导出模块和副作用导入 使用场景: 实现进程级单例模式 线程间共享数据 导出Sendable对象供多线程操作 示例展示了共享模块定义Singl

Sendable对象支持冻结操作,冻结后的对象变成只读对象,不能增删改属性,因此在多个并发实例间访问均不需要加锁,可以通过调用[Object.freeze]接口冻结对象。

ASON是类似JSON的工具,用于Sendable对象的序列化和反序列化。它提供ASON.stringify将对象转为字符串,ASON.parse将字符串转为Sendable对象,支持并发任务间的高性能传递。默认生成不可变布局的Sendable对象,若需可变可指定返回MAP类型。使用示例展示了基本操作方法,通过ArkTSUtils调用ASON接口实现对象与字符串间的转换。

摘要: 本文详细阐述了ArkTS中Sendable类型的继承与使用规范。主要规则包括:Sendable类只能继承Sendable类,非Sendable类不能继承Sendable类;成员变量必须为Sendable支持的类型,禁止使用非Sendable接口、!断言和计算属性名;泛型模板类型需为Sendable类型;禁止访问模块内非top-level变量;禁止使用非@Sendable装饰器;必须通过ne

ArkTS引入异步锁机制解决多线程并发数据竞争问题。异步锁支持跨线程引用传递,仅提供非阻塞式锁以避免死锁风险,同时也能保证单线程内异步任务的时序一致性。使用示例展示了如何通过AsyncLock保护共享变量,确保线程安全操作。异步锁方法需标记为async,调用方需使用await确保正确时序。该机制有效解决了@Sendable共享对象在多线程环境下的同步问题。

共享模块是ArkTS中进程内仅加载一次的模块,用"use shared"指令声明。它可实现进程单例,不同线程间共享同一实例。使用时需注意:必须与"use strict"一起置于文件顶部;仅支持ets文件;导出变量须为可共享对象;不允许直接导出模块或side-effects-import。示例展示了如何创建共享模块导出Sendable对象,并在多线程中安全操作

Sendable对象支持冻结操作,冻结后的对象变成只读对象,不能增删改属性,因此在多个并发实例间访问均不需要加锁,可以通过调用[Object.freeze]接口冻结对象。

ASON工具解析与使用摘要 ASON类似于JSON工具,用于Sendable对象的序列化和反序列化。通过ASON.stringify将对象转为字符串,ASON.parse将字符串转为Sendable对象,支持并发任务间的高性能引用传递。默认生成的Sendable对象布局不可变,若需可变布局可指定返回类型为MAP,此时返回collections.Map对象支持属性增删。示例展示了如何使用ASON.p

ArkTS共享容器是一种用于并发任务间高性能数据传递的容器类,包括Array、Map、Set等类型,支持引用传递和拷贝传递两种方式。由于非线程安全,需配合异步锁机制使用,避免多线程并发修改导致异常。与原生API相比,ArkTS容器在构造函数、length属性设置以及元素操作等方面存在差异,例如必须提供初始值、禁止遍历过程中修改元素等。通过示例代码展示了如何使用异步锁安全地操作共享数组,并对比了Ar

本文总结了Sendable类和非Sendable类在继承、实现、成员变量等方面的使用规范。主要内容包括: Sendable类只能继承自Sendable类; 非Sendable类只能继承自非Sendable类; 成员变量必须符合Sendable数据类型规范; 不支持使用!断言和计算属性名; 泛型类型必须是Sendable类型; 不能使用对象字面量初始化Sendable类型; 非Sendable类型不








