HarmonyOS 多线程数据互通问题

封装网络请求框架,当是在子线程发起的请求的时候,走到网络框架,需要增加公共参数(公共参数都在主线程初始化),这时候只能emit参数到主线程,有没有更好的处理方式?

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

可以使用sendable,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-sendable-V5

可参考如下代码:

// Sendable01.ets
@Sendable
export class Singleton {
  static instance: Singleton;
  private constructor() {
  }
  static getInstance(): Singleton {
    if(!Singleton.instance) {
      Singleton.instance = new Singleton();
    }
    return Singleton.instance;
  }

  printName(): void {
    console.info("Singleton name: " + this.name)
  }
  modifyName(name: string): void {
    this.name = name;
  }

  increase(): void {
    this.num++;
  }
  decrase(): void {
    this.num--;
  }
  printNum(): void {
    console.info("Singleton num: " + this.num)
  }

  private name: string = "test";
  private num: number = 0;
}
// concurrent.ets
import { Singleton } from "./Sendable01"

@Concurrent
export function testSingleton(arg: Singleton) {
  let obj2 = Singleton.getInstance();
  if (obj2 == arg) {
    console.info("Sendable class Singleton only one")
  } else {
    console.info("Test failed")
  }
  obj2.printName()
  obj2.printNum()
  obj2.increase()
  obj2.increase()
  obj2.modifyName("TestSingleton")
  return arg;
}
// index.ets
import { Singleton } from './Sendable01';
import { testSingleton } from "./concurrent"

let obj1 = Singleton.getInstance();
obj1.printName();
obj1.printNum();
obj1.increase();
obj1.increase();
obj1.modifyName("Singleton");
taskpool.execute(testSingleton, obj1).then((res)=>{
  let obj3 = res as Singleton;
  obj3.printName();
  obj3.printNum();
})
分享
微博
QQ
微信
回复
3天前
相关问题
HarmonyOS 多线程问题
538浏览 • 1回复 待解决
HarmonyOS关于多线程问题
495浏览 • 1回复 待解决
HarmonyOS 多线程并发相关问题
275浏览 • 1回复 待解决
如何实现多线程数据共享
2245浏览 • 1回复 待解决
HarmonyOS 数据多线程操作
211浏览 • 1回复 待解决
HarmonyOS 多线程安全问题验证
51浏览 • 1回复 待解决
HarmonyOS 多线程共享数据方法的疑惑
57浏览 • 2回复 待解决
HarmonyOS多线程使用?
208浏览 • 0回复 待解决
HarmonyOS是否支持多线程
175浏览 • 0回复 待解决
HarmonyOS 多线程写法限制
176浏览 • 1回复 待解决
ArkTs多线程方案如何保证线程安全
2604浏览 • 2回复 待解决
HarmonyOS 关于多线程并发的使用
51浏览 • 1回复 待解决
如何使用taskpool实现多线程
1175浏览 • 1回复 待解决
HarmonyOS ArkTS会不会支持多线程开发
13008浏览 • 4回复 待解决
什么是系统的多线程模型
423浏览 • 1回复 待解决
多线程中EGL如何共享Context
458浏览 • 1回复 待解决