当前ArkTS创建线程(worker)会创建一个新的ArkTS引擎实例,会占用额外的内存。同时,ArkTS提供了TaskPool并发API,类似GCD的线程池能力,可以执行任务,而且不需要开发者进行线程生命周期管理。Task会被调度到有限数量的工作线程执行,多个task会共享这些工作线程(ArkTS引擎实例),系统会根据负载情况扩容/缩容工作线程的数量,充分发挥硬性性能。因此针对需要大量线程的问题,应用的开发建议如下:将多线程任务转变为并发任务,通过TaskPool分发执行;I/O型任务不需要单独开启线程,而是在当前线程(可以是TaskPool线程)执行;少量需要常驻的CPU密集型任务,采用Worker,并且需要控制在8个及以下。参考链接TaskPool和Worker的对比
当前ArkTS创建线程(worker)会创建一个新的ArkTS引擎实例,会占用额外的内存。同时,ArkTS提供了TaskPool并发API,类似GCD的线程池能力,可以执行任务,而且不需要开发者进行线程生命周期管理。Task会被调度到有限数量的工作线程执行,多个task会共享这些工作线程(ArkTS引擎实例),系统会根据负载情况扩容/缩容工作线程的数量,充分发挥硬性性能。
因此针对需要大量线程的问题,应用的开发建议如下:
将多线程任务转变为并发任务,通过TaskPool分发执行;I/O型任务不需要单独开启线程,而是在当前线程(可以是TaskPool线程)执行;少量需要常驻的CPU密集型任务,采用Worker,并且需要控制在8个及以下。
参考链接
TaskPool和Worker的对比