【HarmonyOS Next】鸿蒙 TaskPool 和 Worker 详解 (一)

【HarmonyOS Next】鸿蒙 TaskPool 和 Worker 详解 (一)
一、TaskPool 和 Worker 如何实现多线程?各自特点是什么?
在鸿蒙中通过 TaskPool 和 Worker 实现多线程并发,两者都基于 Actor 并发模型实现。

Actor 并发模型,每一个独立的 Actor 代表一个线程。互相之间不打扰,内存不共享,通过消息进行传递,线程间进行通信传输。
比内存共享并发模型好在不会同时竞争同一内存资源。
【内存共享并发模型指多线程同时执行任务,这些线程依赖同一内存并且都有权限访问,线程访问内存前需要抢占并锁定内存的使用权,没有抢占到内存的线程需要等待其他线程释放使用权再执行。】
两者都是为了处理耗时或者密集型的任务。用多线程的方式,规避堵塞主线程的问题。从而最大化系统的利用率,降低整体资源消耗,并提高系统的整体性能。
生命周期 TaskPool 自行管理生命周期,无需关心任务负载高低。而 Worker 需要自行管理 Worker 的数量及生命周期。
个数上限现在 Worker 同个进程下,最多支持同时开启 64 个 Worker 线程,实际数量由进程内存决定。而 TaskPool 线程池的概念,理论上没有上限。
任务处理量级 TaskPool 主要处理轻量级,所以有三分钟的任务处理时间限制。worker 主要处理时间更长,偏重。
二、TaskPool 的使用
首先定义处理函数:
复制代码
通过调用 execute()方法执行任务
复制代码
三、worker 的使用
1.首先需要创建 worker 文件:

在其中进行消息收发和耗时逻辑处理。
2.之后进行 worker 实例的获取:
复制代码
3.进行消息监听和发送:
复制代码
版权声明: 本文为 InfoQ 作者【GeorgeGcs】的原创文章。
原文链接:【http://xie.infoq.cn/article/7c4b0fb838bfaa9f095c7cac0】。文章转载请联系作者。
评论