| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 22-Oct-2025 | - | 35 | 32 | ||
| entry/ | 22-Oct-2025 | - | 1,483 | 1,362 | ||
| hvigor/ | 22-Oct-2025 | - | 38 | 36 | ||
| screenshots/ | 22-Oct-2025 | - | ||||
| .gitignore | D | 22-Oct-2025 | 133 | 12 | 12 | |
| README.md | D | 22-Oct-2025 | 6.6 KiB | 113 | 80 | |
| build-profile.json5 | D | 22-Oct-2025 | 1.4 KiB | 58 | 57 | |
| code-linter.json5 | D | 22-Oct-2025 | 958 | 35 | 34 | |
| hvigorfile.ts | D | 22-Oct-2025 | 843 | 22 | 5 | |
| oh-package.json5 | D | 22-Oct-2025 | 834 | 26 | 24 | |
| ohosTest.md | D | 22-Oct-2025 | 1.5 KiB | 13 | 11 |
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