Sendable 序列化,对象分配在各自的虚拟机内存空间,存不存在竞争访问

@Sendable 
export class Demo { 
  count:number = 0; 
  static demo:Demo = null; 
  static asyncLock: AsyncLock = new AsyncLock(); 
  static async getInstace() { 
    return await Demo.asyncLock.lockAsync(()=>{ 
      if (demo == null) { 
        demo = new Demo() 
      } 
      return demo; 
    }) 
  } 
 
  async setCount(count: number) { 
    // 这里不用asyncLock.async的话,是不是就不会出现线程竞争? 
    // 我们的一个场景:网络库的全局拦截器中,不会访问类成员变量,也不希望产生线程竞争 
    await Demo.asyncLock.async(()=> { 
      this.count = count; 
    }) 
  } 
}
HarmonyOS
2024-04-28 23:43:45
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
JKings

支持SendableClass序列化。对象分配在各自的虚拟机内存空间,不存在竞争访问,不同线程可以同时读写。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-sendable-0000001820999729

共享模式后存在竞争,如果不出现竞争,就不需要加lock。

分享
微博
QQ
微信
回复
2024-04-29 16:03:10
相关问题
真机运行,UDID不存在
4475浏览 • 1回复 待解决
自定义类如何实现序列化
319浏览 • 1回复 待解决
有谁知道 task 参数无法序列化
266浏览 • 1回复 待解决
如何实现文件不存在则创建文件
408浏览 • 1回复 待解决
虚拟机上运行不了鸿蒙项目
4799浏览 • 1回复 待解决
lottie动画组件存在严重内存泄漏
211浏览 • 1回复 待解决
虚拟机mysql连不上怎么回事?
682浏览 • 1回复 待解决
鸿蒙如何访问华为云对象存储?
2170浏览 • 1回复 待解决