
【HarmonyOS Next】鸿蒙应用进程和线程详解 原创
【HarmonyOS Next】鸿蒙应用进程和线程详解
一、前言
-
进程的定义:
进程是系统进行资源分配的基本单位,是操作系统结构的基础。在鸿蒙系统中,一个应用下会有三类进程:
(1) 主进程,
(2) ExtensionAbility进程,同一种类型的ExtensionAbility会放在一个进程里。例如FromExtensionAbility,创建了两个,也会在同一个进程里。【ExtensionAbility详情参见官方链接:ExtensionAbility组件】
(3) WebView渲染进程,用于网页容器渲染的进程。【这种设计提升了鸿蒙系统中arkWeb的网页容器渲染能力】 -
线程的定义:
线程是操作系统进行运算调度的基本单位,是进程中的执行流,共享进程的资源。鸿蒙系统中,以主进程举例,会有三种类型的线程:
(1)主线程
(2)TaskPool Worker线程
(3)Worker线程
后两者用于创建多线程,TaskPool Worker主要用于处理轻量级的耗时任务。Worker用于偏重的耗时任务。
二、进程处理:
-
进程的创建:
如上图所示,三方应用可以创建XXExtensionAbility的形式,增加应用内的进程。但是Webview渲染进程和主进程的是不能创建增加。 -
跨进程通信:
鸿蒙系统目前提供了两种方式实现跨进程通信,公共事件和Emitter。这两个方案外,startAbility也可传递一些信息。
公共事件主要是监听系统的事件,分为系统公共事件和自定义事件。三方应用主要通过自定义事件来通信。
Emitter的使用类似于EventHub,只不过在这个基础上,多了传递包裹的封装,添加了优先级和序号。也新增了once,监听一次的接口而已。
三、线程处理:
1.线程的创建和线程间通信:
如上所说,可以使用TaskPool Worker 和 Worker创建线程。并且配套会有双向通信的接口。
需要注意的是前者有性能要求,太过于耗时的操作,例如超过三分钟,就会无条件失败,这种耗时任务就要使用后者Worker来实现。不过后者又因为消耗系统资源,一个应用只能创建八个。
TaskPool Worker:
Worker:
2.线程内通信:
EventHub,GlobalThis,单例,AppStorage。都可实现线程内UI界面,UIAbility和业务类之间的通信。
