Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
3fc3ab31
D
Docs
项目概览
OpenHarmony
/
Docs
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
3fc3ab31
编写于
1月 18, 2023
作者:
O
openharmony_ci
提交者:
Gitee
1月 18, 2023
浏览文件
操作
浏览文件
下载
差异文件
!13612 add taskpool info
Merge pull request !13612 from wangzhaoyong/master
上级
99a338f9
4a80a435
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
63 addition
and
13 deletion
+63
-13
zh-cn/application-dev/reference/apis/js-apis-taskpool.md
zh-cn/application-dev/reference/apis/js-apis-taskpool.md
+63
-13
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-taskpool.md
浏览文件 @
3fc3ab31
# @ohos.taskpool(使用任务池)
taskpool作用是为应用程序提供一个多线程的运行环境,可以降低整体资源的消耗、提高系统的整体性能,且用户无需关心线程实例的生命周期。
任务池(taskpool)作用是为应用程序提供一个多线程的运行环境,降低整体资源的消耗、提高系统的整体性能,且您无需关心线程实例的生命周期。您可以使用任务池API创建后台任务(Task),并对所创建的任务进行如任务执行、任务取消的操作。理论上您可以使用任务池API创建数量不受限制的任务,但是出于内存因素不建议您这样做。此外,不建议您在任务中执行阻塞操作,特别是无限期阻塞操作,长时间的阻塞操作占据工作线程,可能会阻塞其他任务调度,影响您的应用性能。
您所创建的同一优先级任务的执行顺序可以由您决定,任务真实执行的顺序与您调用任务池API提供的任务执行接口顺序一致。任务默认优先级是MEDIUM。(任务优先级机制暂未支持)
当同一时间待执行的任务数量大于任务池工作线程数量,任务池会根据负载均衡机制进行扩容,增加工作线程数量,减少整体等待时长。同样,当执行的任务数量减少,工作线程数量大于执行任务数量,部分工作线程处于空闲状态,任务池会根据负载均衡机制进行缩容,减少工作线程数量。(负载均衡机制暂未支持)
任务池API以数字形式返回错误码。有关各个错误码的更多信息,请参阅文档
[
语言基础类库错误码
](
../errorcodes/errorcode-utils.md
)
。
> **说明:**<br/>
> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
...
...
@@ -38,9 +44,9 @@ Task的构造函数。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | --------- | ---- | ------------------------ |
| func | Function | 是 | 任务执行需要传入函数。 |
| args | unknown[] | 否 | 任务执行传入函数的参数。 |
| ------ | --------- | ---- | ------------------------
--------------------------------------------
|
| func | Function | 是 | 任务执行需要传入函数
,支持的函数返回值类型请查
[
序列化支持类型
](
#序列化支持类型
)
。 |
| args | unknown
[
] | 否 | 任务执行传入函数的参数
,支持的参数类型请查[序列化支持类型
](
#序列化支持类型
)
。 |
**错误码:**
...
...
@@ -66,9 +72,9 @@ let task = new taskpool.Task(func, "this is my first Task");
**系统能力:**
SystemCapability.Utils.Lang
| 名称 | 类型 | 可读 | 可写 | 说明 |
| --------- | --------- | ---- | ---- | ---------------------------- |
| function | Function | 是 | 是 | 创建任务时需要传入的函数。 |
| arguments | unknown[] | 是 | 是 | 创建任务传入函数所需的参数。 |
| --------- | --------- | ---- | ---- | ----------------------------
---------------------------------------------
|
| function | Function | 是 | 是 | 创建任务时需要传入的函数
,支持的函数返回值类型请查
[
序列化支持类型
](
#序列化支持类型
)
。 |
| arguments | unknown
[
] | 是 | 是 | 创建任务传入函数所需的参数
,支持的参数类型请查[序列化支持类型
](
#序列化支持类型
)
。 |
## taskpool.execute
...
...
@@ -81,9 +87,9 @@ execute(func: Function, ...args: unknown[]): Promise\<unknown>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | --------- | ---- | ---------------------------- |
| func | Function | 是 | 执行的逻辑需要传入函数。 |
| args | unknown[] | 否 | 执行逻辑的函数所需要的参数。 |
| ------ | --------- | ---- | ----------------------------
------------------------------------------
|
| func | Function | 是 | 执行的逻辑需要传入函数
,支持的函数返回值类型请查
[
序列化支持类型
](
#序列化支持类型
)
。 |
| args | unknown
[
] | 否 | 执行逻辑的函数所需要的参数
,支持的参数类型请查[序列化支持类型
](
#序列化支持类型
)
。 |
**返回值:**
...
...
@@ -191,3 +197,47 @@ let task = new taskpool.Task(func, "this is first Task");
let
value
=
taskpool
.
execute
(
task
);
taskpool
.
cancel
(
task
);
```
## 其他说明
### 序列化支持类型
序列化支持类型包括:All Primitive Type(不包括symbol)、Date、String、RegExp、Array、Map、Set、Object、ArrayBuffer、TypedArray。
### 注意事项
taskpool任务只支持引用入参传递或者import的变量,不支持使用闭包变量。
```
js
// 1. 引用入参传递
function
func
(
args
)
{
"
use concurrent
"
console
.
log
(
"
func:
"
+
args
);
return
args
;
}
let
task
=
new
taskpool
.
Task
(
func
,
"
create task, then execute
"
);
let
val1
=
taskpool
.
execute
(
task
);
let
val2
=
taskpool
.
execute
(
func
,
"
execute task by func
"
);
```
```
js
// 2. 引用import变量
// b.ts
export
var
c
=
2000
;
// a.ts
import
{
c
}
from
'
./b
'
function
test
(
a
)
{
"
use concurrent
"
console
.
log
(
a
);
console
.
log
(
c
);
return
a
;
}
let
task
=
new
taskpool
.
Task
(
test
,
"
create task, then execute
"
);
let
val1
=
taskpool
.
execute
(
task
);
let
val2
=
taskpool
.
execute
(
test
,
"
execute task by func
"
);
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录