OpenHarmony开发者论坛

标题: 目前系统的多线程内存占用大,每个线程需要一个ArkTs引擎,意味着更多的内存占用。如何解决应用需要避免开辟过多线程,并发处理任务数量受限,无法充分发挥设备性能的问题? [打印本页]

作者: 北向实践与赋能    时间: 2024-3-8 17:17
标题: 目前系统的多线程内存占用大,每个线程需要一个ArkTs引擎,意味着更多的内存占用。如何解决应用需要避免开辟过多线程,并发处理任务数量受限,无法充分发挥设备性能的问题?
[md]目前系统的多线程内存占用大,每个线程需要一个ArkTs引擎,意味着更多的内存占用。如何解决应用需要避免开辟过多线程,并发处理任务数量受限,无法充分发挥设备性能的问题?
[/md]
作者: 北向实践与赋能    时间: 2024-3-8 17:18
标题: 目前系统的多线程内存占用大,每个线程需要一个ArkTs引擎,意味着更多的内存占用。如何解决应用需要避免开辟过多线程,并发处理任务数量受限,无法充分发挥设备性能的问题?
[md]**原理澄清**
当前ArkTS创建线程(worker)会创建一个新的ArkTS引擎实例,会占用额外的内存。
同时,ArkTS提供了TaskPool并发API,类似GCD的线程池能力,可以执行任务,而且不需要开发者进行线程生命周期管理。Task会被调度到有限数量的工作线程执行,多个task会共享这些工作线程(ArkTS引擎实例),系统会根据负载情况扩容/缩容工作线程的数量,充分发挥硬性性能

**解决方案**
因此针对需要大量线程的问题,应用的开发建议如下:
将多线程任务转变为并发任务,通过TaskPool分发执行
I/O型任务不需要单独开启线程,而是在当前线程(可以是TaskPool线程)执行
少量需要常驻的CPU密集型任务,采用Worker,并且需要控制在8个及以下。

**参考链接:**
https://developer.harmonyos.com/ ... 0000001632849934-V3
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5