• Home
Name Date Size #Lines LOC

..--

AppScope/22-Oct-2025-3532

entry/22-Oct-2025-1,4831,362

hvigor/22-Oct-2025-3836

screenshots/22-Oct-2025-

.gitignoreD22-Oct-2025133 1212

README.mdD22-Oct-20256.6 KiB11380

build-profile.json5D22-Oct-20251.4 KiB5857

code-linter.json5D22-Oct-2025958 3534

hvigorfile.tsD22-Oct-2025843 225

oh-package.json5D22-Oct-2025834 2624

ohosTest.mdD22-Oct-20251.5 KiB1311

README.md

1# ArkTS 线程间通信场景
2
3### 介绍
4
5#### 使用TaskPool执行独立的耗时任务
6
7对于一个独立运行的耗时任务,只需要在任务执行完毕后将结果返回给宿主线程,没有上下文依赖。
8
9#### 使用TaskPool执行多个耗时任务
10
11如果有多个任务同时执行,由于任务的复杂度不同,执行时间会不一样,返回数据的时间也是不可控的。如果宿主线程需要所有任务执行完毕的数据,那么可以通过下面这种方式实现。
12
13除此以外,如果需要处理的数据量较大(比如一个列表中有10000条数据),把这些数据都放在一个Task中处理也是比较耗时的。那么就可以将原始数据拆分成多个列表,并将每个子列表分配给一个独立的Task进行执行,并且等待全部执行完毕后拼成完整的数据,这样可以节省处理时间,提升用户体验。
14
15#### TaskPool任务与宿主线程通信
16
17如果一个Task不仅需要返回的执行结果,还需要定时向宿主线状态或数据的变化,或者需要分段返回大量数据(例如从数据库中读取大量数据)。
18
19#### Worker和宿主线程的即时消息通信
20
21在ArkTS中,Worker相对于Taskpool存在一定的差异性,有数量限制但是可以长时间存在。一个[Worker](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/worker-introduction.md)中可能会执行多个不同的任务,每个任务执行的时长或者返回的结果可能都不相同,宿主线程需要根据情况调用Worker中的不同方法,Worker则需要及时地将结果返回给宿主线程。
22
23#### Worker同步调用宿主线程的接口
24
25如果一个接口在主线程中已经实现了,Worker需要调用该接口。
26
27### 多级Worker间高性能消息通信
28多级Worker(即通过父Worker创建子Worker的机制形成层级线程关系)间通信是一种常见的需求,由于Worker线程生命周期由用户自行管理,因此需要注意多级Worker生命周期的正确管理,建议开发者确保销毁父Worker前先销毁所有子Worker。
29
30该工程中展示的代码详细描述可查如下链接:
31
32- [使用TaskPool执行独立的耗时任务](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/independent-time-consuming-task.md)
33- [使用TaskPool执行多个耗时任务](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/multi-time-consuming-tasks.md)
34- [TaskPool任务与宿主线程通信](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/taskpool-communicates-with-mainthread.md)
35- [Worker和宿主线程的即时消息通信](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/worker-communicates-with-mainthread.md)
36- [Worker同步调用宿主线程的接口](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/worker-invoke-mainthread-interface.md)
37- [多级Worker间高性能消息通信](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/worker-postMessage-sendable.md)
38
39### 效果预览
40
41|                                         首页                                          |                                  执行及结果即时反馈                                   |
42| :-----------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: |
43| <img src="./screenshots/InterThreadCommunicationScenario_1.png" style="zoom: 30%;" width="360;" /> | <img src="./screenshots/InterThreadCommunicationScenario_2.png" style="zoom: 30%;" width="360;" /> |
44
45### 使用说明
46
471. 在主界面,点击任意按钮进行跳转,点击Hello World执行程序。
482. 执行结果会即时反馈在屏幕中央,并在控制台打印log。
49
50### 工程目录
51
52```
53entry/src/
54 ├── main
55 │   ├── ets
56 │   │   ├── entryability
57 │   │   ├── entrybackupability
58 │   │   ├── managers
59 │   │       ├── CopyEntry.ets      			        // 一个Sendable类CopyEntry
60 │   │       ├── IconItemSource.ets      			    // 公共资源文件
61 │   │       ├── IndependentTask.ets                    // 公共资源文件
62 │   │       ├── IndependentTimeConsumingTask.ets       // 使用TaskPool执行独立的耗时任务
63 │   │       ├── MultiTask.ets                          // 公共资源文件
64 │   │       ├── MultiTimeConsumingTasks.ets		    // 使用TaskPool执行多个耗时任务
65 │   │       ├── TaskSendDataUsage.ets                  // TaskPool任务与宿主线程通信
66 │   │       ├── WorkerCallGlobalUsage.ets              // Worker同步调用宿主线程的接口
67 │   │       ├── WorkerCommunicatesWithMainthread.ets   // Worker和宿主线程的即时消息通信
68 │   │       ├── WorkerPostMessageSendable.ets          // 多级Worker间高性能消息通信
69 │   │   ├── pages
70 │   │       ├── Index.ets                              // 首页
71 │   │   ├── util
72 │   │       ├── CommonButton.ets 		                // 首页跳转UI
73 │   │       ├── resource.ets 		                    // 资源引用转换
74 │   │   ├── workers
75 │   │       ├── Worker.ets 		                    // 公共资源文件
76 │   │       ├── ChildWorker.ets 		                // 子Worker
77 │   │       ├── ParentWorker.ets 		                // 父Worker
78 │   ├── module.json5
79 │   └── resources
80 ├── ohosTest
81 │   ├── ets
82 │   │   ├── test
83 │   │       ├── Ability.test.ets                       // 自动化测试代码
84```
85
86### 相关权限
87
88不涉及。
89
90### 依赖
91
92不涉及。
93
94### 约束与限制
95
961.本示例仅支持标准系统上运行, 支持设备:RK3568。
97
982.本示例为Stage模型,支持API20版本SDK,版本号:6.0.0.40,镜像版本号:OpenHarmony_6.0.0.40。
99
1003.本示例需要使用DevEco Studio 5.1.1 Release (Build Version: 5.1.1.820, built on June 28, 2025)及以上版本才可编译运行。
101
102### 下载
103
104如需单独下载本工程,执行如下命令:
105
106```
107git init
108git config core.sparsecheckout true
109echo code/DocsSample/ArkTS/ArkTsConcurrent/ConcurrentThreadCommunication/InterThreadCommunicationScenario > .git/info/sparse-checkout
110git remote add origin https://gitcode.com/openharmony/applications_app_samples.git
111git pull origin master
112```
113