Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
de5aabb0
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
de5aabb0
编写于
7月 21, 2023
作者:
G
ge-yafang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update docs
Signed-off-by:
N
ge-yafang
<
geyafang@huawei.com
>
上级
3c60f5ff
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
8 addition
and
6 deletion
+8
-6
zh-cn/application-dev/arkts-utils/cpu-intensive-task-development.md
...ication-dev/arkts-utils/cpu-intensive-task-development.md
+3
-3
zh-cn/application-dev/arkts-utils/io-intensive-task-development.md
...lication-dev/arkts-utils/io-intensive-task-development.md
+1
-1
zh-cn/application-dev/arkts-utils/sync-task-development.md
zh-cn/application-dev/arkts-utils/sync-task-development.md
+3
-1
zh-cn/application-dev/arkts-utils/taskpool-vs-worker.md
zh-cn/application-dev/arkts-utils/taskpool-vs-worker.md
+1
-1
未找到文件。
zh-cn/application-dev/arkts-utils/cpu-intensive-task-development.md
浏览文件 @
de5aabb0
...
...
@@ -86,7 +86,7 @@ struct Index {
const
workerInstance
=
new
worker
.
ThreadWorker
(
'
entry/ets/workers/MyWorker.ts
'
);
```
3.
在宿主线程中通过调用
[
onmessage()
](
../reference/apis/js-apis-worker.md#onmessage9
)
方法接收Worker线程发送过来的消息,
以及
通过调用
[
postMessage()
](
../reference/apis/js-apis-worker.md#postmessage9
)
方法向Worker线程发送消息。
3.
在宿主线程中通过调用
[
onmessage()
](
../reference/apis/js-apis-worker.md#onmessage9
)
方法接收Worker线程发送过来的消息,
并
通过调用
[
postMessage()
](
../reference/apis/js-apis-worker.md#postmessage9
)
方法向Worker线程发送消息。
例如向Worker线程发送训练和预测的消息,同时接收Worker线程发送回来的消息。
...
...
@@ -117,7 +117,7 @@ struct Index {
let
workerPort
:
ThreadWorkerGlobalScope
=
worker
.
workerPort
;
```
5.
在Worker线程中通过调用
[
onmessage()
](
../reference/apis/js-apis-worker.md#onmessage9-1
)
方法接收宿主线程发送的消息内容,
以及
通过调用
[
postMessage()
](
../reference/apis/js-apis-worker.md#postmessage9-2
)
方法向宿主线程发送消息。
5.
在Worker线程中通过调用
[
onmessage()
](
../reference/apis/js-apis-worker.md#onmessage9-1
)
方法接收宿主线程发送的消息内容,
并
通过调用
[
postMessage()
](
../reference/apis/js-apis-worker.md#postmessage9-2
)
方法向宿主线程发送消息。
例如在Worker线程中定义预测模型及其训练过程,同时与主线程进行信息交互。
...
...
@@ -164,7 +164,7 @@ struct Index {
```
6.
在Worker线程中完成任务之后,执行Worker线程销毁操作。根据需要可以在宿主线程中对Worker线程进行销毁,也可以在Worker线程中主动销毁Worker线程。
在宿主线程中通过调用
[
onexit()
](
../reference/apis/js-apis-worker.md#onexit9
)
方法定义Worker
现成
销毁后的处理逻辑。
在宿主线程中通过调用
[
onexit()
](
../reference/apis/js-apis-worker.md#onexit9
)
方法定义Worker
线程
销毁后的处理逻辑。
```
js
...
...
zh-cn/application-dev/arkts-utils/io-intensive-task-development.md
浏览文件 @
de5aabb0
...
...
@@ -45,7 +45,7 @@ I/O密集型任务的性能重点通常不在于CPU的处理能力,而在于I/
// 使用TaskPool执行包含密集I/O的并发函数
// 数组较大时,I/O密集型任务任务分发也会抢占主线程,需要使用多线程能力
taskpool
.
execute
(
concurrentTest
,
[
filePath1
,
filePath2
]).
then
((
ret
)
=>
{
//
步骤3:
调度结果处理
// 调度结果处理
console
.
info
(
`The result:
${
ret
}
`
);
})
```
zh-cn/application-dev/arkts-utils/sync-task-development.md
浏览文件 @
de5aabb0
...
...
@@ -4,7 +4,9 @@
同步任务是指在多个线程之间协调执行的任务,其目的是确保多个任务按照一定的顺序和规则执行,例如使用锁来防止数据竞争。
同步任务的实现需要考虑多个线程之间的协作和同步,以确保数据的正确性和程序的正确执行。由于TaskPool偏向于单个独立的任务,因此当各个同步任务之间相对独立时推荐使用TaskPool,例如一系列导入的静态方法,或者单例实现的方法;反之,如果同步任务之间有关联性,则需要使用Worker,例如无法单例创建的类对象实现的方法。
同步任务的实现需要考虑多个线程之间的协作和同步,以确保数据的正确性和程序的正确执行。
由于TaskPool偏向于单个独立的任务,因此当各个同步任务之间相对独立时推荐使用TaskPool,例如一系列导入的静态方法,或者单例实现的方法。如果同步任务之间有关联性,则需要使用Worker,例如无法单例创建的类对象实现的方法。
## 使用TaskPool处理同步任务
...
...
zh-cn/application-dev/arkts-utils/taskpool-vs-worker.md
浏览文件 @
de5aabb0
...
...
@@ -16,7 +16,7 @@ TaskPool(任务池)和Worker的作用是为应用程序提供一个多线程
| 内存模型 | 线程间隔离,内存不共享。 | 线程间隔离,内存不共享。 |
| 参数传递机制 | 采用标准的结构化克隆算法(Structured Clone)进行序列化、反序列化,完成参数传递。
<br/>
支持ArrayBuffer转移和SharedArrayBuffer共享。 | 采用标准的结构化克隆算法(Structured Clone)进行序列化、反序列化,完成参数传递。
<br/>
支持ArrayBuffer转移和SharedArrayBuffer共享。 |
| 参数传递 | 直接传递,无需封装,默认进行transfer。 | 消息对象唯一参数,需要自己封装。 |
| 方法调用 | 直接将方法传入调用。 | 在Worker
.ts
中进行消息解析并调用对应方法。 |
| 方法调用 | 直接将方法传入调用。 | 在Worker
线程
中进行消息解析并调用对应方法。 |
| 返回值 | 异步调用后默认返回。 | 主动发送消息,需在onmessage解析赋值。 |
| 生命周期 | TaskPool自行管理生命周期,无需关心任务负载高低。 | 开发者自行管理Worker的数量及生命周期。 |
| 任务池个数上限 | 自动管理,无需配置。 | 最多开启8个Worker。 |
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录