如何解决应用需要避免开辟过多线程,并发处理任务数量受限,无法充分发挥设备性能的问题

如何解决应用需要避免开辟过多线程,并发处理任务数量受限,无法充分发挥设备性能的问题

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

当前ArkTS创建线程(worker)会创建一个新的ArkTS引擎实例,会占用额外的内存。同时,ArkTS提供了TaskPool并发API,类似GCD的线程池能力,可以执行任务,而且不需要开发者进行线程生命周期管理。Task会被调度到有限数量的工作线程执行,多个task会共享这些工作线程(ArkTS引擎实例),系统会根据负载情况扩容/缩容工作线程的数量,充分发挥硬性性能。

因此针对需要大量线程的问题,应用的开发建议如下:

将多线程任务转变为并发任务,通过TaskPool分发执行;I/O型任务不需要单独开启线程,而是在当前线程(可以是TaskPool线程)执行;少量需要常驻的CPU密集型任务,采用Worker,并且需要控制在8个及以下。

参考链接

TaskPool和Worker的对比

分享
微博
QQ
微信
回复
2024-03-18 16:51:24
相关问题
应用线程过多如何处理
867浏览 • 1回复 待解决
如何解决底层库无法调试问题
482浏览 • 1回复 待解决
如何解决hdc无法连接真机问题
715浏览 • 1回复 待解决
如何处理推送数量不够用问题
839浏览 • 1回复 待解决
this传递问题,该如何解决
1020浏览 • 1回复 待解决
如何解决预览流黑屏问题
424浏览 • 1回复 待解决
ArkTs多线程方案如何保证线程安全
1201浏览 • 1回复 待解决
如何实现多线程数据共享
959浏览 • 1回复 待解决
如何解决文件中文乱码问题
1330浏览 • 3回复 待解决
如何使用taskpool实现多线程
568浏览 • 1回复 待解决
如何解决webview离线加载白屏问题
521浏览 • 1回复 待解决
线程信息以及线程任务如何获取
724浏览 • 1回复 待解决
如何解决webview loaddata白屏问题
476浏览 • 1回复 待解决
HarmonyOS如何解决数据存储问题
7891浏览 • 3回复 已解决
应该如何设计大量线程并发方案
979浏览 • 1回复 待解决