1. HarmonyOS 鸿蒙Next 应用场景:读取全局配置(会动态刷新) 问题类型:多个线程,访问另一个线程中的数据(线程间无父子、兄弟关系) 2. HarmonyOS 鸿蒙Next 应用场景:写日志 问题类型:多个线程,往一个线程中写数据(线程间无父子、兄弟关系) 3. HarmonyOS 鸿蒙Next 应用场景:启动框架中的任务调度

  1. HarmonyOS 鸿蒙Next 应用场景:读取全局配置(会动态刷新) 问题类型:多个线程,访问另一个线程中的数据(线程间无父子、兄弟关系)

  2. HarmonyOS 鸿蒙Next 应用场景:写日志 问题类型:多个线程,往一个线程中写数据(线程间无父子、兄弟关系)

  3. HarmonyOS 鸿蒙Next 应用场景:启动框架中的任务调度

  4. 应用场景:读取全局配置(会动态刷新)
    问题类型:多个线程,访问另一个线程中的数据(线程间无父子、兄弟关系)

  5. 应用场景:写日志
    问题类型:多个线程,往一个线程中写数据(线程间无父子、兄弟关系)

  6. 应用场景:启动框架中的任务调度
    问题类型:多生产者(线程),多消费者(线程)(线程间无父子、兄弟关系)

以上目前只能使用SharedArrayBuffer来实现?
可是使用SharedArrayBuffer需要将数据序列化,我们的数据有些场景下会非常大,在1M以上。性能上会有问题。有什么好办法吗?


关于SharedArrayBuffer的原子操作,可以给个例子吗?


TaskPool的三分钟机制,之前的issue有回答说,三分钟后不一定会报错
根据硬件、task是否满载而定,可以给更详细的说明吗?


据说会有新API支持多线程间共享对象,可以提前放出接口设计,让我们评估下能否满足所有场景吗?


更多关于1. HarmonyOS 鸿蒙Next 应用场景:读取全局配置(会动态刷新) 问题类型:多个线程,访问另一个线程中的数据(线程间无父子、兄弟关系) 2. HarmonyOS 鸿蒙Next 应用场景:写日志 问题类型:多个线程,往一个线程中写数据(线程间无父子、兄弟关系) 3. HarmonyOS 鸿蒙Next 应用场景:启动框架中的任务调度的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
  1. 提供新API-Sendable单例的使用说明 需求还没交付,使用方法可能会有调整,参考思路即可
// demo.ets

@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.demo == null) {
        Demo.demo = new Demo();
      }
      return Demo.demo;
    });
  }
  
  async setCount(count: number) {
    await Demo.asyncLock.async(() => {
      this.count = count;
    });
  }
}

// index.ets

import { Demo } from './demo.ets';

@Concurrent
async function foo() {
  let demo = await Demo.getInstace();
  demo.setCount(1);
}

onClick(async () => {
  let demo: Demo = await Demo.getInstace();
  console.log(demo.count); // 0
  await taskpool.execute(foo);
  console.log(demo.count); // 1
});
  1. 提供SharedArrayBuffer、Atomics的使用Demo 参考这个,https://juejin.cn/post/6844904152963776519

更多关于1. HarmonyOS 鸿蒙Next 应用场景:读取全局配置(会动态刷新) 问题类型:多个线程,访问另一个线程中的数据(线程间无父子、兄弟关系) 2. HarmonyOS 鸿蒙Next 应用场景:写日志 问题类型:多个线程,往一个线程中写数据(线程间无父子、兄弟关系) 3. HarmonyOS 鸿蒙Next 应用场景:启动框架中的任务调度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  1. HarmonyOS 鸿蒙Next 应用场景:读取全局配置(会动态刷新)

在HarmonyOS中,多个线程访问另一个线程中的数据(线程间无父子、兄弟关系)时,可通过全局变量或共享内存实现数据访问,但需注意线程安全问题。可利用鸿蒙提供的同步机制,如互斥锁(Mutex)或读写锁(RwLock),确保数据在读取时不会被其他线程修改。对于动态刷新的配置,可在配置更新时通知所有相关线程重新读取配置。

  1. HarmonyOS 鸿蒙Next 应用场景:写日志

多个线程向一个线程写日志时,应使用线程安全的日志系统。鸿蒙提供日志接口,可通过队列或环形缓冲区等方式收集日志,由单一线程负责实际写入操作。使用鸿蒙的消息队列机制,将日志消息从多个线程发送到日志处理线程,确保日志顺序和完整性。

  1. HarmonyOS 鸿蒙Next 应用场景:启动框架中的任务调度

鸿蒙框架中的任务调度可通过任务管理器实现。创建任务时,指定任务优先级、堆栈大小等资源,任务间通过信号量、事件等机制进行同步。启动任务调度器,负责任务的创建、启动、挂起、恢复和删除等操作。确保任务间通信安全,避免资源竞争和死锁。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部