ArkTS的SendableClass对象内存共享的原理和限制是什么

ArkTS的SendableClass对象内存共享的原理和限制是什么

HarmonyOS
2024-03-17 13:23:39
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
NGKSWCIDT

SendableClass是基于Actor内存隔离并发模型的扩展,Sendable对象的内存是线程间共享的,但是仍然需要满足单线程无锁化运行。因此,要保证同一个Sendable实例不能多线程并发访问,开发者需要通过同步机制保证线程安全。

Sendable对象需要满足一定的规格:

1. 成员属性为 Sendable类或者基础类型(string number boolean等)。

2. 成员属性必须显式初始化。

3. 成员函数不能使用闭包,只能使用入参或者this成员或者import导入的变量。

4. 只允许Sendable类继承Sendable类。

5. @Sendable只能写在ArkTS(ets)文件中。

6. 不支持定义私有属性,要用private。

7. 导出Sendable类的文件,不能导出非Sendable属性。

8. 传输方式有如下两种:

a. 序列化传递:深拷贝到其他线程,非共享模式。

b. 共享模式:可以跨线程引用传递,多线程可同时读写,开发者需要自行采用同步机制避免多线程竞争。

参考链接

多线程并发概述

分享
微博
QQ
微信
回复
2024-03-18 16:31:46
相关问题
OceanBase 复制表原理是什么
2250浏览 • 1回复 待解决
LazyForEach懒加载原理是什么
248浏览 • 1回复 待解决
PolarDB 备份恢复原理是什么
1171浏览 • 1回复 待解决
性能优化中组件复用原理是什么
184浏览 • 1回复 待解决
OceanBase 多租户原理是什么
2575浏览 • 1回复 待解决
TaskPool线程内存如何共享
202浏览 • 1回复 待解决
Worker线程内存如何共享
212浏览 • 1回复 待解决
什么FA模型不支持进程内对象共享
252浏览 • 1回复 待解决
HAPHAR区别是什么
177浏览 • 1回复 待解决
OpenIDUnionID长度限制要求
131浏览 • 1回复 待解决
你学习ArkTS遇到最大问题是什么
509浏览 • 1回复 已解决
WorkerTaskPool线程数量是否有限制
217浏览 • 1回复 待解决