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