HarmonyOS 鸿蒙Next 任务池taskpool使用方式

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

HarmonyOS 鸿蒙Next 任务池taskpool使用方式

有个解压缩的耗时操作,之前使用promise异步,但是阻塞主线程,看了有taskpool能力,task定义需要在function 函数里面,

我们的调用任务的地方在class method里面,需要给function传入 class实例作为入参(跟class相关参数太多了),执行任务函数结果不接受class实例参数,测试了number类型的,可以。有什么好的建议去定义这个function


更多关于HarmonyOS 鸿蒙Next 任务池taskpool使用方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
taskpool传递只能是序列化数据,如果传递实例对象,需要sendable修饰。可以参考如下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-sendable-V5#跨并发实例传递带方法的class实例对象

sendable的class必须满足sendable支持的数据类型,文档如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-sendable-V5#sendable支持的数据类型

其实你的业务场景,是否可以考虑用worker来实现?在worker.ets里面实现子线程解压,主线程只需要把需要解压的文件信息传给worker就行。

AppStorage应用全局的UI状态存储 :https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-appstorage-V5

AppStorage是一个用于存储应用程序数据的属性包装器,它只能在主线程中使用。如果在Taskpool中尝试使用AppStorage,可能会导致数据不一致或者崩溃等问题。因此,应该确保在使用AppStorage时只在主线程中操作。

更多关于HarmonyOS 鸿蒙Next 任务池taskpool使用方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 任务池(taskpool)使用方式主要通过其提供的API接口进行任务分发和管理。以下是基本的使用步骤:

  1. 初始化任务池:使用系统提供的API初始化一个任务池实例,配置任务池的大小、优先级等参数。

  2. 定义任务:编写需要执行的任务函数,这些函数应符合任务池对任务入口点的要求,通常是无返回值、无参数的函数指针或lambda表达式。

  3. 提交任务:通过任务池的提交接口,将定义好的任务提交到任务池中。任务池会根据配置和当前负载情况,调度任务的执行。

  4. 任务执行:任务池负责任务的调度和执行,开发者无需关心具体的执行细节。任务执行完成后,任务池会回收相关资源。

  5. 同步与等待:如果需要等待任务完成,可以使用任务池提供的同步机制,如等待所有任务完成或等待某个特定任务完成。

  6. 销毁任务池:在不再需要使用任务池时,通过相应的API销毁任务池实例,释放相关资源。

请注意,任务池的使用涉及多线程和并发编程,需要确保任务的正确性和线程安全。

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

回到顶部