我在使用HarmonyOS 鸿蒙Next开发应用时,ArkTS的Sendable对象有什么特别之处?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

我在使用HarmonyOS 鸿蒙Next开发应用时,ArkTS的Sendable对象有什么特别之处?

我在使用HarmonyOSNEXT开发应用时,ArkTS的Sendable对象有什么特别之处?

2 回复

在传统JS引擎上,对象的并发通信开销的优化方式只有一种,就是把实现下沉到Native侧,通过Transferable对象的转移或共享方式降低并发通信开销。ArkTS提供了Sendable对象类型,在并发通信时支持通过引用传递来解决上述问题。

基本说明参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-sendable-V5

使用规则和约束:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/sendable-constraints-V5

更多关于我在使用HarmonyOS 鸿蒙Next开发应用时,ArkTS的Sendable对象有什么特别之处?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next中,ArkTS的Sendable对象具有几个特别之处:

  1. 跨并发实例传递:Sendable数据可以在ArkTS的并发实例间(包括主线程、TaskPool和Worker工作线程)进行传递,支持引用传递和拷贝传递两种方式。这有助于在多线程环境下实现数据共享和同步。
  2. 避免数据竞争:当多个并发实例尝试同时更新可变Sendable数据时,可能会发生数据竞争。ArkTS提供了异步锁的机制,以确保数据的一致性和完整性,从而避免数据竞争问题。
  3. 类型约束:要成为Sendable对象,需要满足一定的类型约束。例如,类需要被@Sendable装饰器标注,且只能继承自Sendable类;接口需要继承自ISendable。此外,Sendable对象的成员变量也必须是Sendable支持的数据类型。

这些特性使得Sendable对象在ArkTS中能够高效地处理多线程环境下的数据共享和同步问题,从而提升了应用的性能和稳定性。

回到顶部