• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# FFRT
2
3
4## 概述
5
6FFRT(Function Flow运行时)是支持Function Flow编程模型的软件运行时库,用于调度执行开发者基于Function Flow编程模型开发的应用。
7
8**系统能力:** SystemCapability.Resourceschedule.Ffrt.Core
9
10**起始版本:** 10
11
12
13## 汇总
14
15
16### 文件
17
18| 名称 | 描述 |
19| -------- | -------- |
20| [condition_variable.h](condition__variable_8h.md) | 声明条件变量的C接口。  |
21| [loop.h](loop_8h.md) | 声明循环的C接口。  |
22| [mutex.h](mutex_8h.md) | 声明mutex的C接口。  |
23| [queue.h](queue_8h.md) | 声明队列的C接口。  |
24| [sleep.h](sleep_8h.md) | 声明sleep和yield的C接口。  |
25| [task.h](task_8h.md) | 声明任务的C接口。  |
26| [timer.h](timer_8h.md) | 声明定时器的C接口。  |
27| [type_def.h](type__def_8h.md) | 定义通用类型。  |
28
29
30### 结构体
31
32| 名称 | 描述 |
33| -------- | -------- |
34| struct  [ffrt_function_header_t](ffrt__function__header__t.md) | 任务执行体。  |
35| struct  [ffrt_dependence_t](ffrt__dependence__t.md) | 依赖数据结构。  |
36| struct  [ffrt_deps_t](ffrt__deps__t.md) | 依赖结构定义。  |
37| struct  [ffrt_task_attr_t](ffrt__task__attr__t.md) | 并行任务属性结构。  |
38| struct  [ffrt_queue_attr_t](ffrt__queue__attr__t.md) | 串行队列属性结构。  |
39| struct  [ffrt_condattr_t](ffrt__condattr__t.md) | FFRT条件变量属性结构。  |
40| struct  [ffrt_mutexattr_t](ffrt__mutexattr__t.md) | FFRT锁属性结构。  |
41| struct  [ffrt_mutex_t](ffrt__mutex__t.md) | FFRT互斥锁结构。  |
42| struct  [ffrt_cond_t](ffrt__cond__t.md) | FFRT条件变量结构。  |
43
44
45### 类型定义
46
47| 名称 | 描述 |
48| -------- | -------- |
49| typedef void \* [ffrt_loop_t](#ffrt_loop_t) | loop句柄。  |
50| typedef void \* [ffrt_queue_t](#ffrt_queue_t) | 队列句柄。  |
51| typedef int [ffrt_qos_t](#ffrt_qos_t) | QoS类型。  |
52| typedef void(\* [ffrt_function_t](#ffrt_function_t)) (void \*) | 任务执行函数指针类型。  |
53| typedef void \* [ffrt_task_handle_t](#ffrt_task_handle_t) | 并行任务句柄。  |
54| typedef void(\* [ffrt_poller_cb](#ffrt_poller_cb)) (void \*data, uint32_t event) | poller回调函数定义。  |
55| typedef void(\* [ffrt_timer_cb](#ffrt_timer_cb)) (void \*data) | timer回调函数定义。  |
56| typedef int [ffrt_timer_t](#ffrt_timer_t) | 定时器句柄。  |
57
58
59### 枚举
60
61| 名称 | 描述 |
62| -------- | -------- |
63| [ffrt_queue_type_t](#ffrt_queue_type_t) { ffrt_queue_serial, ffrt_queue_concurrent, ffrt_queue_max } | 队列类型。  |
64| [ffrt_queue_priority_t](#ffrt_queue_priority_t) { ffrt_queue_priority_immediate = 0, ffrt_queue_priority_high, ffrt_queue_priority_low, ffrt_queue_priority_idle } | 任务的优先级类型。  |
65| [ffrt_qos_default_t](#ffrt_qos_default_t) {<br/>ffrt_qos_inherit = -1, ffrt_qos_background, ffrt_qos_utility, ffrt_qos_default,<br/>ffrt_qos_user_initiated<br/>} | 任务的QoS类型。  |
66| [ffrt_storage_size_t](#ffrt_storage_size_t) {<br/>ffrt_task_attr_storage_size = 128, ffrt_auto_managed_function_storage_size = 64 + sizeof(ffrt_function_header_t), ffrt_mutex_storage_size = 64, ffrt_cond_storage_size = 64,<br/>ffrt_queue_attr_storage_size = 128<br/>} | 多种类型数据结构分配大小定义。  |
67| [ffrt_function_kind_t](#ffrt_function_kind_t) { ffrt_function_kind_general, ffrt_function_kind_queue } | 任务类型。  |
68| [ffrt_dependence_type_t](#ffrt_dependence_type_t) { ffrt_dependence_data, ffrt_dependence_task } | 依赖类型。  |
69| [ffrt_error_t](#ffrt_error_t) {<br/>ffrt_error = -1, ffrt_success = 0, ffrt_error_nomem = ENOMEM, ffrt_error_timedout = ETIMEDOUT,<br/>ffrt_error_busy = EBUSY, ffrt_error_inval = EINVAL<br/>} | FFRT错误码。  |
70| [ffrt_mutex_type](#ffrt_mutex_type) { ffrt_mutex_normal = 0, ffrt_mutex_recursive = 2, ffrt_mutex_default = ffrt_mutex_normal } | mutex类型枚举。  |
71
72
73### 函数
74
75| 名称 | 描述 |
76| -------- | -------- |
77| FFRT_C_API int [ffrt_cond_init](#ffrt_cond_init) ([ffrt_cond_t](ffrt__cond__t.md) \*cond, const [ffrt_condattr_t](ffrt__condattr__t.md) \*attr) | 初始化条件变量。  |
78| FFRT_C_API int [ffrt_cond_signal](#ffrt_cond_signal) ([ffrt_cond_t](ffrt__cond__t.md) \*cond) | 唤醒阻塞在条件变量上的一个任务。  |
79| FFRT_C_API int [ffrt_cond_broadcast](#ffrt_cond_broadcast) ([ffrt_cond_t](ffrt__cond__t.md) \*cond) | 唤醒阻塞在条件变量上的所有任务。  |
80| FFRT_C_API int [ffrt_cond_wait](#ffrt_cond_wait) ([ffrt_cond_t](ffrt__cond__t.md) \*cond, [ffrt_mutex_t](ffrt__mutex__t.md) \*mutex) | 条件变量等待函数,条件变量不满足时阻塞当前任务。  |
81| FFRT_C_API int [ffrt_cond_timedwait](#ffrt_cond_timedwait) ([ffrt_cond_t](ffrt__cond__t.md) \*cond, [ffrt_mutex_t](ffrt__mutex__t.md) \*mutex, const struct timespec \*time_point) | 条件变量超时等待函数,条件变量不满足时阻塞当前任务,超时等待返回。  |
82| FFRT_C_API int [ffrt_cond_destroy](#ffrt_cond_destroy) ([ffrt_cond_t](ffrt__cond__t.md) \*cond) | 销毁条件变量。  |
83| FFRT_C_API [ffrt_loop_t](#ffrt_loop_t) [ffrt_loop_create](#ffrt_loop_create) ([ffrt_queue_t](#ffrt_queue_t) queue) | 创建loop对象。  |
84| FFRT_C_API int [ffrt_loop_destroy](#ffrt_loop_destroy) ([ffrt_loop_t](#ffrt_loop_t) loop) | 销毁loop对象。  |
85| FFRT_C_API int [ffrt_loop_run](#ffrt_loop_run) ([ffrt_loop_t](#ffrt_loop_t) loop) | 开启loop循环。  |
86| FFRT_C_API void [ffrt_loop_stop](#ffrt_loop_stop) ([ffrt_loop_t](#ffrt_loop_t) loop) | 停止loop循环。  |
87| FFRT_C_API int [ffrt_loop_epoll_ctl](#ffrt_loop_epoll_ctl) ([ffrt_loop_t](#ffrt_loop_t) loop, int op, int fd, uint32_t events, void \*data, [ffrt_poller_cb](#ffrt_poller_cb) cb) | 管理loop上的监听事件。  |
88| FFRT_C_API [ffrt_timer_t](#ffrt_timer_t) [ffrt_loop_timer_start](#ffrt_loop_timer_start) ([ffrt_loop_t](#ffrt_loop_t) loop, uint64_t timeout, void \*data, [ffrt_timer_cb](#ffrt_timer_cb) cb, bool repeat) | 在ffrt loop上启动定时器。  |
89| FFRT_C_API int [ffrt_loop_timer_stop](#ffrt_loop_timer_stop) ([ffrt_loop_t](#ffrt_loop_t) loop, [ffrt_timer_t](#ffrt_timer_t) handle) | 停止ffrt loop定时器。  |
90| FFRT_C_API int [ffrt_mutexattr_init](#ffrt_mutexattr_init) ([ffrt_mutexattr_t](ffrt__mutexattr__t.md) \*attr) | 初始化mutex属性。  |
91| FFRT_C_API int [ffrt_mutexattr_settype](#ffrt_mutexattr_settype) ([ffrt_mutexattr_t](ffrt__mutexattr__t.md) \*attr, int type) | 设置mutex属性类型。  |
92| FFRT_C_API int [ffrt_mutexattr_gettype](#ffrt_mutexattr_gettype) ([ffrt_mutexattr_t](ffrt__mutexattr__t.md) \*attr, int \*type) | 获取mutex类型。  |
93| FFRT_C_API int [ffrt_mutexattr_destroy](#ffrt_mutexattr_destroy) ([ffrt_mutexattr_t](ffrt__mutexattr__t.md) \*attr) | 销毁mutex属性,用户需要调用此接口。  |
94| FFRT_C_API int [ffrt_mutex_init](#ffrt_mutex_init) ([ffrt_mutex_t](ffrt__mutex__t.md) \*mutex, const [ffrt_mutexattr_t](ffrt__mutexattr__t.md) \*attr) | 初始化mutex。  |
95| FFRT_C_API int [ffrt_mutex_lock](#ffrt_mutex_lock) ([ffrt_mutex_t](ffrt__mutex__t.md) \*mutex) | 获取mutex。  |
96| FFRT_C_API int [ffrt_mutex_unlock](#ffrt_mutex_unlock) ([ffrt_mutex_t](ffrt__mutex__t.md) \*mutex) | 释放mutex。  |
97| FFRT_C_API int [ffrt_mutex_trylock](#ffrt_mutex_trylock) ([ffrt_mutex_t](ffrt__mutex__t.md) \*mutex) | 尝试获取mutex。  |
98| FFRT_C_API int [ffrt_mutex_destroy](#ffrt_mutex_destroy) ([ffrt_mutex_t](ffrt__mutex__t.md) \*mutex) | 销毁mutex。  |
99| FFRT_C_API int [ffrt_queue_attr_init](#ffrt_queue_attr_init) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr) | 初始化队列属性。  |
100| FFRT_C_API void [ffrt_queue_attr_destroy](#ffrt_queue_attr_destroy) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr) | 销毁队列属性。  |
101| FFRT_C_API void [ffrt_queue_attr_set_qos](#ffrt_queue_attr_set_qos) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr, [ffrt_qos_t](#ffrt_qos_t) qos) | 设置队列QoS属性。  |
102| FFRT_C_API [ffrt_qos_t](#ffrt_qos_t) [ffrt_queue_attr_get_qos](#ffrt_queue_attr_get_qos) (const [ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr) | 获取队列QoS属性。  |
103| FFRT_C_API void [ffrt_queue_attr_set_timeout](#ffrt_queue_attr_set_timeout) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr, uint64_t timeout_us) | 设置串行队列timeout属性。  |
104| FFRT_C_API uint64_t [ffrt_queue_attr_get_timeout](#ffrt_queue_attr_get_timeout) (const [ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr) | 获取串行队列任务执行的timeout时间。  |
105| FFRT_C_API void [ffrt_queue_attr_set_callback](#ffrt_queue_attr_set_callback) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr, [ffrt_function_header_t](ffrt__function__header__t.md) \*f) | 设置串行队列超时回调方法。  |
106| FFRT_C_API [ffrt_function_header_t](ffrt__function__header__t.md) \* [ffrt_queue_attr_get_callback](#ffrt_queue_attr_get_callback) (const [ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr) | 获取串行队列超时回调方法。  |
107| FFRT_C_API void [ffrt_queue_attr_set_max_concurrency](#ffrt_queue_attr_set_max_concurrency) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr, const int max_concurrency) | 设置并行队列最大并发度。  |
108| FFRT_C_API int [ffrt_queue_attr_get_max_concurrency](#ffrt_queue_attr_get_max_concurrency) (const [ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr) | 获取并行队列最大并发度。  |
109| FFRT_C_API [ffrt_queue_t](#ffrt_queue_t) [ffrt_queue_create](#ffrt_queue_create) ([ffrt_queue_type_t](#ffrt_queue_type_t) type, const char \*name, const [ffrt_queue_attr_t](ffrt__queue__attr__t.md) \*attr) | 创建队列。  |
110| FFRT_C_API void [ffrt_queue_destroy](#ffrt_queue_destroy) ([ffrt_queue_t](#ffrt_queue_t) queue) | 销毁队列。  |
111| FFRT_C_API void [ffrt_queue_submit](#ffrt_queue_submit) ([ffrt_queue_t](#ffrt_queue_t) queue, [ffrt_function_header_t](ffrt__function__header__t.md) \*f, const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 提交一个任务到队列中调度执行。  |
112| FFRT_C_API [ffrt_task_handle_t](#ffrt_task_handle_t) [ffrt_queue_submit_h](#ffrt_queue_submit_h) ([ffrt_queue_t](#ffrt_queue_t) queue, [ffrt_function_header_t](ffrt__function__header__t.md) \*f, const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 提交一个任务到队列中调度执行,并返回任务句柄。  |
113| FFRT_C_API void [ffrt_queue_wait](#ffrt_queue_wait) ([ffrt_task_handle_t](#ffrt_task_handle_t) handle) | 等待队列中一个任务执行完成。  |
114| FFRT_C_API int [ffrt_queue_cancel](#ffrt_queue_cancel) ([ffrt_task_handle_t](#ffrt_task_handle_t) handle) | 取消队列中一个任务。  |
115| FFRT_C_API [ffrt_queue_t](#ffrt_queue_t) [ffrt_get_main_queue](#ffrt_get_main_queue) (void) | 获取主线程队列。  |
116| FFRT_C_API [ffrt_queue_t](#ffrt_queue_t) [ffrt_get_current_queue](#ffrt_get_current_queue) (void) | 获取应用Worker(ArkTs)线程队列。  |
117| FFRT_C_API int [ffrt_usleep](#ffrt_usleep) (uint64_t usec) | 睡眠调用线程固定的时间。  |
118| FFRT_C_API void [ffrt_yield](#ffrt_yield) (void) | 当前任务主动放权,让其他任务有机会调度执行。  |
119| FFRT_C_API int [ffrt_task_attr_init](#ffrt_task_attr_init) ([ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 初始化任务属性。  |
120| FFRT_C_API void [ffrt_task_attr_set_name](#ffrt_task_attr_set_name) ([ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr, const char \*name) | 设置任务名字。  |
121| FFRT_C_API const char \* [ffrt_task_attr_get_name](#ffrt_task_attr_get_name) (const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 获取任务名字。  |
122| FFRT_C_API void [ffrt_task_attr_destroy](#ffrt_task_attr_destroy) ([ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 销毁任务属性。  |
123| FFRT_C_API void [ffrt_task_attr_set_qos](#ffrt_task_attr_set_qos) ([ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr, [ffrt_qos_t](#ffrt_qos_t) qos) | 设置任务QoS。  |
124| FFRT_C_API [ffrt_qos_t](#ffrt_qos_t) [ffrt_task_attr_get_qos](#ffrt_task_attr_get_qos) (const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 获取任务QoS。  |
125| FFRT_C_API void [ffrt_task_attr_set_delay](#ffrt_task_attr_set_delay) ([ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr, uint64_t delay_us) | 设置任务延迟时间。  |
126| FFRT_C_API uint64_t [ffrt_task_attr_get_delay](#ffrt_task_attr_get_delay) (const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 获取任务延迟时间。  |
127| FFRT_C_API void [ffrt_task_attr_set_queue_priority](#ffrt_task_attr_set_queue_priority) ([ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr, [ffrt_queue_priority_t](#ffrt_queue_priority_t) priority) | 设置并行队列任务优先级。  |
128| FFRT_C_API [ffrt_queue_priority_t](#ffrt_queue_priority_t) [ffrt_task_attr_get_queue_priority](#ffrt_task_attr_get_queue_priority) (const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 获取并行队列任务优先级。  |
129| FFRT_C_API void [ffrt_task_attr_set_stack_size](#ffrt_task_attr_set_stack_size) ([ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr, uint64_t size) | 设置任务栈大小。  |
130| FFRT_C_API uint64_t [ffrt_task_attr_get_stack_size](#ffrt_task_attr_get_stack_size) (const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 获取任务栈大小。  |
131| FFRT_C_API int [ffrt_this_task_update_qos](#ffrt_this_task_update_qos) ([ffrt_qos_t](#ffrt_qos_t) qos) | 更新任务QoS。  |
132| FFRT_C_API [ffrt_qos_t](#ffrt_qos_t) [ffrt_this_task_get_qos](#ffrt_this_task_get_qos) (void) | 获取任务QoS。  |
133| FFRT_C_API uint64_t [ffrt_this_task_get_id](#ffrt_this_task_get_id) (void) | 获取任务id。  |
134| FFRT_C_API void \* [ffrt_alloc_auto_managed_function_storage_base](#ffrt_alloc_auto_managed_function_storage_base) ([ffrt_function_kind_t](#ffrt_function_kind_t) kind) | 申请函数执行结构的内存。  |
135| FFRT_C_API void [ffrt_submit_base](#ffrt_submit_base) ([ffrt_function_header_t](ffrt__function__header__t.md) \*f, const [ffrt_deps_t](ffrt__deps__t.md) \*in_deps, const [ffrt_deps_t](ffrt__deps__t.md) \*out_deps, const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 提交任务调度执行。  |
136| FFRT_C_API [ffrt_task_handle_t](#ffrt_task_handle_t) [ffrt_submit_h_base](#ffrt_submit_h_base) ([ffrt_function_header_t](ffrt__function__header__t.md) \*f, const [ffrt_deps_t](ffrt__deps__t.md) \*in_deps, const [ffrt_deps_t](ffrt__deps__t.md) \*out_deps, const [ffrt_task_attr_t](ffrt__task__attr__t.md) \*attr) | 提交任务调度执行并返回任务句柄。  |
137| FFRT_C_API uint32_t [ffrt_task_handle_inc_ref](#ffrt_task_handle_inc_ref) ([ffrt_task_handle_t](#ffrt_task_handle_t) handle) | 增加任务句柄的引用数。  |
138| FFRT_C_API uint32_t [ffrt_task_handle_dec_ref](#ffrt_task_handle_dec_ref) ([ffrt_task_handle_t](#ffrt_task_handle_t) handle) | 减少任务句柄的引用计数。  |
139| FFRT_C_API void [ffrt_task_handle_destroy](#ffrt_task_handle_destroy) ([ffrt_task_handle_t](#ffrt_task_handle_t) handle) | 销毁任务句柄。  |
140| FFRT_C_API void [ffrt_wait_deps](#ffrt_wait_deps) (const [ffrt_deps_t](ffrt__deps__t.md) \*deps) | 等待依赖的任务完成,当前任务开始执行。  |
141| FFRT_C_API void [ffrt_wait](#ffrt_wait) (void) | 等待之前所有提交任务完成,当前任务开始执行。  |
142| FFRT_C_API [ffrt_timer_t](#ffrt_timer_t) [ffrt_timer_start](#ffrt_timer_start) ([ffrt_qos_t](#ffrt_qos_t) qos, uint64_t timeout, void \*data, [ffrt_timer_cb](#ffrt_timer_cb) cb, bool repeat) | 启动计时器。  |
143| FFRT_C_API int [ffrt_timer_stop](#ffrt_timer_stop) ([ffrt_qos_t](#ffrt_qos_t) qos, [ffrt_timer_t](#ffrt_timer_t) handle) | 关闭计时器。  |
144
145
146## 类型定义说明
147
148
149### ffrt_function_t
150
151```
152typedef void(* ffrt_function_t) (void *)
153```
154**描述**
155任务执行函数指针类型。
156
157**起始版本:** 10
158
159
160### ffrt_loop_t
161
162```
163typedef void* ffrt_loop_t
164```
165**描述**
166loop句柄。
167
168**起始版本:** 12
169
170
171### ffrt_poller_cb
172
173```
174typedef void(* ffrt_poller_cb) (void *data, uint32_t event)
175```
176**描述**
177poller回调函数定义。
178
179**起始版本:** 12
180
181
182### ffrt_qos_t
183
184```
185typedef int ffrt_qos_t
186```
187**描述**
188QoS类型。
189
190**起始版本:** 10
191
192
193### ffrt_queue_t
194
195```
196typedef void* ffrt_queue_t
197```
198**描述**
199队列句柄。
200
201**起始版本:** 10
202
203
204### ffrt_task_handle_t
205
206```
207typedef void* ffrt_task_handle_t
208```
209**描述**
210并行任务句柄。
211
212**起始版本:** 10
213
214
215### ffrt_timer_cb
216
217```
218typedef void(* ffrt_timer_cb) (void *data)
219```
220**描述**
221timer回调函数定义。
222
223**起始版本:** 12
224
225
226### ffrt_timer_t
227
228```
229typedef int ffrt_timer_t
230```
231**描述**
232定时器句柄。
233
234**起始版本:** 12
235
236
237## 枚举类型说明
238
239
240### ffrt_dependence_type_t
241
242```
243enum ffrt_dependence_type_t
244```
245**描述**
246依赖类型。
247
248**起始版本:** 10
249
250| 枚举值 | 描述 |
251| -------- | -------- |
252| ffrt_dependence_data  | 数据依赖类型&nbsp;&nbsp; |
253| ffrt_dependence_task  | 任务依赖类型&nbsp;&nbsp; |
254
255
256### ffrt_error_t
257
258```
259enum ffrt_error_t
260```
261**描述**
262FFRT错误码。
263
264**起始版本:** 10
265
266| 枚举值 | 描述 |
267| -------- | -------- |
268| ffrt_error  | 失败&nbsp;&nbsp; |
269| ffrt_success  | 成功&nbsp;&nbsp; |
270| ffrt_error_nomem  | 内存不足&nbsp;&nbsp; |
271| ffrt_error_timedout  | 超时&nbsp;&nbsp; |
272| ffrt_error_busy  | 重新尝试&nbsp;&nbsp; |
273| ffrt_error_inval  | 值无效&nbsp;&nbsp; |
274
275
276### ffrt_function_kind_t
277
278```
279enum ffrt_function_kind_t
280```
281**描述**
282任务类型。
283
284**起始版本:** 10
285
286| 枚举值 | 描述 |
287| -------- | -------- |
288| ffrt_function_kind_general  | 通用任务类型&nbsp;&nbsp; |
289| ffrt_function_kind_queue  | 队列任务类型&nbsp;&nbsp; |
290
291
292### ffrt_mutex_type
293
294```
295enum ffrt_mutex_type
296```
297**描述**
298mutex类型枚举。
299
300描述互斥类型,ffrt_mutex_normal是普通互斥锁; ffrt_mutex_recursive是递归互斥锁,ffrt_mutex_default是普通互斥锁。
301
302**起始版本:** 12
303
304| 枚举值 | 描述 |
305| -------- | -------- |
306| ffrt_mutex_normal  | 普通互斥锁&nbsp;&nbsp; |
307| ffrt_mutex_recursive  | 递归互斥锁&nbsp;&nbsp; |
308| ffrt_mutex_default  | 默认互斥锁&nbsp;&nbsp; |
309
310
311### ffrt_qos_default_t
312
313```
314enum ffrt_qos_default_t
315```
316**描述**
317任务的QoS类型。
318
319**起始版本:** 10
320
321| 枚举值 | 描述 |
322| -------- | -------- |
323| ffrt_qos_inherit  | 继承当前任务QoS属性&nbsp;&nbsp; |
324| ffrt_qos_background  | 后台任务&nbsp;&nbsp; |
325| ffrt_qos_utility  | 实时工具&nbsp;&nbsp; |
326| ffrt_qos_default  | 默认类型&nbsp;&nbsp; |
327| ffrt_qos_user_initiated  | 用户期望&nbsp;&nbsp; |
328
329
330### ffrt_queue_priority_t
331
332```
333enum ffrt_queue_priority_t
334```
335**描述**
336任务的优先级类型。
337
338**起始版本:** 12
339
340| 枚举值 | 描述 |
341| -------- | -------- |
342| ffrt_queue_priority_immediate  | immediate 优先级&nbsp;&nbsp; |
343| ffrt_queue_priority_high  | high 优先级&nbsp;&nbsp; |
344| ffrt_queue_priority_low  | low 优先级&nbsp;&nbsp; |
345| ffrt_queue_priority_idle  | lowest 优先级&nbsp;&nbsp; |
346
347
348### ffrt_queue_type_t
349
350```
351enum ffrt_queue_type_t
352```
353**描述**
354队列类型。
355
356**起始版本:** 12
357
358| 枚举值 | 描述 |
359| -------- | -------- |
360| ffrt_queue_serial  | 串行队列&nbsp;&nbsp; |
361| ffrt_queue_concurrent  | 并行队列&nbsp;&nbsp; |
362| ffrt_queue_max  | 无效队列类型&nbsp;&nbsp; |
363
364
365### ffrt_storage_size_t
366
367```
368enum ffrt_storage_size_t
369```
370**描述**
371多种类型数据结构分配大小定义。
372
373**起始版本:** 10
374
375| 枚举值 | 描述 |
376| -------- | -------- |
377| ffrt_task_attr_storage_size  | 任务属性&nbsp;&nbsp; |
378| ffrt_auto_managed_function_storage_size  | 任务执行体&nbsp;&nbsp; |
379| ffrt_mutex_storage_size  | 互斥锁&nbsp;&nbsp; |
380| ffrt_cond_storage_size  | 条件变量&nbsp;&nbsp; |
381| ffrt_queue_attr_storage_size  | 队列属性&nbsp;&nbsp; |
382
383
384## 函数说明
385
386
387### ffrt_alloc_auto_managed_function_storage_base()
388
389```
390FFRT_C_API void* ffrt_alloc_auto_managed_function_storage_base (ffrt_function_kind_t kind)
391```
392**描述**
393申请函数执行结构的内存。
394
395**起始版本:** 10
396
397**参数:**
398
399| 名称 | 描述 |
400| -------- | -------- |
401| kind | 函数执行结构类型,支持通用和队列函数执行结构类型。  |
402
403**返回:**
404
405申请函数执行结构成功返回非空指针, 申请函数执行结构失败返回空指针。
406
407
408### ffrt_cond_broadcast()
409
410```
411FFRT_C_API int ffrt_cond_broadcast (ffrt_cond_t * cond)
412```
413**描述**
414唤醒阻塞在条件变量上的所有任务。
415
416**起始版本:** 10
417
418**参数:**
419
420| 名称 | 描述 |
421| -------- | -------- |
422| cond | 条件变量指针。  |
423
424**返回:**
425
426唤醒成功返回ffrt_success, 唤醒失败返回ffrt_error_inval。
427
428
429### ffrt_cond_destroy()
430
431```
432FFRT_C_API int ffrt_cond_destroy (ffrt_cond_t * cond)
433```
434**描述**
435销毁条件变量。
436
437**起始版本:** 10
438
439**参数:**
440
441| 名称 | 描述 |
442| -------- | -------- |
443| cond | 条件变量指针。  |
444
445**返回:**
446
447销毁条件变量成功返回ffrt_success, 销毁条件变量失败返回ffrt_error_inval。
448
449
450### ffrt_cond_init()
451
452```
453FFRT_C_API int ffrt_cond_init (ffrt_cond_t * cond, const ffrt_condattr_t * attr )
454```
455**描述**
456初始化条件变量。
457
458**起始版本:** 10
459
460**参数:**
461
462| 名称 | 描述 |
463| -------- | -------- |
464| cond | 条件变量指针。  |
465| attr | 条件变量属性指针。  |
466
467**返回:**
468
469初始化条件变量成功返回ffrt_success, 初始化条件变量失败返回ffrt_error_inval。
470
471
472### ffrt_cond_signal()
473
474```
475FFRT_C_API int ffrt_cond_signal (ffrt_cond_t * cond)
476```
477**描述**
478唤醒阻塞在条件变量上的一个任务。
479
480**起始版本:** 10
481
482**参数:**
483
484| 名称 | 描述 |
485| -------- | -------- |
486| cond | 条件变量指针。  |
487
488**返回:**
489
490唤醒成功返回ffrt_success, 唤醒失败返回ffrt_error_inval。
491
492
493### ffrt_cond_timedwait()
494
495```
496FFRT_C_API int ffrt_cond_timedwait (ffrt_cond_t * cond, ffrt_mutex_t * mutex, const struct timespec * time_point )
497```
498**描述**
499条件变量超时等待函数,条件变量不满足时阻塞当前任务,超时等待返回。
500
501如果达到最大等待时间点时没有调用ffrt_cond_signal或ffrt_cond_broadcast函数解除线程阻塞, 则线程会被自动解除阻塞。
502
503**起始版本:** 10
504
505**参数:**
506
507| 名称 | 描述 |
508| -------- | -------- |
509| cond | 条件变量指针。  |
510| mutex | mutex指针。  |
511| time_point | 最大等待到的时间点,超过这个时间点等待返回。  |
512
513**返回:**
514
515等待后被成功唤醒返回ffrt_success, 等待超时返回ffrt_error_timedout, 等待失败ffrt_error_inval。
516
517
518### ffrt_cond_wait()
519
520```
521FFRT_C_API int ffrt_cond_wait (ffrt_cond_t * cond, ffrt_mutex_t * mutex )
522```
523**描述**
524条件变量等待函数,条件变量不满足时阻塞当前任务。
525
526**起始版本:** 10
527
528**参数:**
529
530| 名称 | 描述 |
531| -------- | -------- |
532| cond | 条件变量指针。  |
533| mutex | mutex指针。  |
534
535**返回:**
536
537等待后被成功唤醒返回ffrt_success, 等待失败返回ffrt_error_inval。
538
539
540### ffrt_get_current_queue()
541
542```
543FFRT_C_API ffrt_queue_t ffrt_get_current_queue (void )
544```
545**描述**
546获取应用Worker(ArkTs)线程队列。
547
548**废弃版本:** 15
549
550**起始版本:** 12
551
552**返回:**
553
554返回当前线程队列句柄。
555
556
557### ffrt_get_main_queue()
558
559```
560FFRT_C_API ffrt_queue_t ffrt_get_main_queue (void )
561```
562**描述**
563获取主线程队列。
564
565**起始版本:** 12
566
567**返回:**
568
569返回主线程队列句柄。
570
571
572### ffrt_loop_create()
573
574```
575FFRT_C_API ffrt_loop_t ffrt_loop_create (ffrt_queue_t queue)
576```
577**描述**
578创建loop对象。
579
580**起始版本:** 12
581
582**参数:**
583
584| 名称 | 描述 |
585| -------- | -------- |
586| queue | 并发队列。  |
587
588**返回:**
589
590创建成功返回ffrt_loop_t对象, 创建失败返回空指针。
591
592
593### ffrt_loop_destroy()
594
595```
596FFRT_C_API int ffrt_loop_destroy (ffrt_loop_t loop)
597```
598**描述**
599销毁loop对象。
600
601**起始版本:** 12
602
603**参数:**
604
605| 名称 | 描述 |
606| -------- | -------- |
607| loop | loop对象。  |
608
609**返回:**
610
611销毁成功返回0, 销毁失败返回-1。
612
613
614### ffrt_loop_epoll_ctl()
615
616```
617FFRT_C_API int ffrt_loop_epoll_ctl (ffrt_loop_t loop, int op, int fd, uint32_t events, void * data, ffrt_poller_cb cb )
618```
619**描述**
620管理loop上的监听事件。
621
622**起始版本:** 12
623
624**参数:**
625
626| 名称 | 描述 |
627| -------- | -------- |
628| loop | loop对象。  |
629| op | fd操作符。  |
630| fd | 事件描述符。  |
631| events | 事件。  |
632| data | 事件变化时触发的回调函数的入参。  |
633| cb | 事件变化时触发的回调函数。  |
634
635**返回:**
636
637成功返回0, 失败返回-1。
638
639
640### ffrt_loop_run()
641
642```
643FFRT_C_API int ffrt_loop_run (ffrt_loop_t loop)
644```
645**描述**
646开启loop循环。
647
648**起始版本:** 12
649
650**参数:**
651
652| 名称 | 描述 |
653| -------- | -------- |
654| loop | loop对象。  |
655
656**返回:**
657
658loop循环失败返回-1, loop循环成功返回0。
659
660
661### ffrt_loop_stop()
662
663```
664FFRT_C_API void ffrt_loop_stop (ffrt_loop_t loop)
665```
666**描述**
667停止loop循环。
668
669**起始版本:** 12
670
671**参数:**
672
673| 名称 | 描述 |
674| -------- | -------- |
675| loop | loop对象。  |
676
677
678### ffrt_loop_timer_start()
679
680```
681FFRT_C_API ffrt_timer_t ffrt_loop_timer_start (ffrt_loop_t loop, uint64_t timeout, void * data, ffrt_timer_cb cb, bool repeat )
682```
683**描述**
684在ffrt loop上启动定时器。
685
686**起始版本:** 12
687
688**参数:**
689
690| 名称 | 描述 |
691| -------- | -------- |
692| loop | loop对象。  |
693| timeout | 超时时间。  |
694| data | 事件变化时触发的回调函数的入参。  |
695| cb | 事件变化时触发的回调函数。  |
696| repeat | 是否重复执行该定时器。  |
697
698**返回:**
699
700返回定时器句柄。
701
702
703### ffrt_loop_timer_stop()
704
705```
706FFRT_C_API int ffrt_loop_timer_stop (ffrt_loop_t loop, ffrt_timer_t handle )
707```
708**描述**
709停止ffrt loop定时器。
710
711**起始版本:** 12
712
713**参数:**
714
715| 名称 | 描述 |
716| -------- | -------- |
717| loop | loop对象。  |
718| handle | timer对象。  |
719
720**返回:**
721
722成功返回0, 失败返回-1。
723
724
725### ffrt_mutex_destroy()
726
727```
728FFRT_C_API int ffrt_mutex_destroy (ffrt_mutex_t * mutex)
729```
730**描述**
731销毁mutex。
732
733**起始版本:** 10
734
735**参数:**
736
737| 名称 | 描述 |
738| -------- | -------- |
739| mutex | mutex指针。  |
740
741**返回:**
742
743销毁mutex成功返回ffrt_success, 销毁mutex失败返回ffrt_error_inval。
744
745
746### ffrt_mutex_init()
747
748```
749FFRT_C_API int ffrt_mutex_init (ffrt_mutex_t * mutex, const ffrt_mutexattr_t * attr )
750```
751**描述**
752初始化mutex。
753
754**起始版本:** 10
755
756**参数:**
757
758| 名称 | 描述 |
759| -------- | -------- |
760| mutex | mutex指针。  |
761| attr | mutex属性。  |
762
763**返回:**
764
765初始化mutex成功返回ffrt_success, 初始化mutex失败返回ffrt_error_inval。
766
767
768### ffrt_mutex_lock()
769
770```
771FFRT_C_API int ffrt_mutex_lock (ffrt_mutex_t * mutex)
772```
773**描述**
774获取mutex。
775
776**起始版本:** 10
777
778**参数:**
779
780| 名称 | 描述 |
781| -------- | -------- |
782| mutex | mutex指针。  |
783
784**返回:**
785
786获取mutex成功返回ffrt_success, 获取mutex失败返回ffrt_error_inval或者阻塞当前任务。
787
788
789### ffrt_mutex_trylock()
790
791```
792FFRT_C_API int ffrt_mutex_trylock (ffrt_mutex_t * mutex)
793```
794**描述**
795尝试获取mutex。
796
797**起始版本:** 10
798
799**参数:**
800
801| 名称 | 描述 |
802| -------- | -------- |
803| mutex | mutex指针。  |
804
805**返回:**
806
807获取mutex成功返回ffrt_success, 获取mutex失败返回ffrt_error_inval或ffrt_error_busy。
808
809
810### ffrt_mutex_unlock()
811
812```
813FFRT_C_API int ffrt_mutex_unlock (ffrt_mutex_t * mutex)
814```
815**描述**
816释放mutex。
817
818**起始版本:** 10
819
820**参数:**
821
822| 名称 | 描述 |
823| -------- | -------- |
824| mutex | mutex指针。  |
825
826**返回:**
827
828释放mutex成功返回ffrt_success, 释放mutex失败返回ffrt_error_inval。
829
830
831### ffrt_mutexattr_destroy()
832
833```
834FFRT_C_API int ffrt_mutexattr_destroy (ffrt_mutexattr_t * attr)
835```
836**描述**
837销毁mutex属性,用户需要调用此接口。
838
839**起始版本:** 12
840
841**参数:**
842
843| 名称 | 描述 |
844| -------- | -------- |
845| attr | mutex属性指针。  |
846
847**返回:**
848
849mutex属性销毁成功返回ffrt_success, mutex属性销毁失败返回ffrt_error_inval。
850
851
852### ffrt_mutexattr_gettype()
853
854```
855FFRT_C_API int ffrt_mutexattr_gettype (ffrt_mutexattr_t * attr, int * type )
856```
857**描述**
858获取mutex类型。
859
860**起始版本:** 12
861
862**参数:**
863
864| 名称 | 描述 |
865| -------- | -------- |
866| attr | mutex属性指针。  |
867| type | mutex类型指针。  |
868
869**返回:**
870
871mutex类型获取成功返回ffrt_success, mutex属性指针或mutex类型指针是空返回ffrt_error_inval。
872
873
874### ffrt_mutexattr_init()
875
876```
877FFRT_C_API int ffrt_mutexattr_init (ffrt_mutexattr_t * attr)
878```
879**描述**
880初始化mutex属性。
881
882**起始版本:** 12
883
884**参数:**
885
886| 名称 | 描述 |
887| -------- | -------- |
888| attr | mutex属性指针。  |
889
890**返回:**
891
892mutex属性初始化成功返回ffrt_success, mutex属性初始化失败返回ffrt_error_inval。
893
894
895### ffrt_mutexattr_settype()
896
897```
898FFRT_C_API int ffrt_mutexattr_settype (ffrt_mutexattr_t * attr, int type )
899```
900**描述**
901设置mutex属性类型。
902
903**起始版本:** 12
904
905**参数:**
906
907| 名称 | 描述 |
908| -------- | -------- |
909| attr | mutex属性指针。  |
910| type | mutex类型。  |
911
912**返回:**
913
914mutex属性类型设置成功返回ffrt_success, mutex属性指针是空或者, mutex类型不是ffrt_mutex_normal或ffrt_mutex_recursive返回ffrt_error_inval。
915
916
917### ffrt_queue_attr_destroy()
918
919```
920FFRT_C_API void ffrt_queue_attr_destroy (ffrt_queue_attr_t * attr)
921```
922**描述**
923销毁队列属性。
924
925**起始版本:** 10
926
927**参数:**
928
929| 名称 | 描述 |
930| -------- | -------- |
931| attr | 队列属性指针。  |
932
933
934### ffrt_queue_attr_get_callback()
935
936```
937FFRT_C_API ffrt_function_header_t* ffrt_queue_attr_get_callback (const ffrt_queue_attr_t * attr)
938```
939**描述**
940获取串行队列超时回调方法。
941
942**起始版本:** 10
943
944**参数:**
945
946| 名称 | 描述 |
947| -------- | -------- |
948| attr | 串行队列属性指针。  |
949
950**返回:**
951
952返回串行队列超时回调方法。
953
954
955### ffrt_queue_attr_get_max_concurrency()
956
957```
958FFRT_C_API int ffrt_queue_attr_get_max_concurrency (const ffrt_queue_attr_t * attr)
959```
960**描述**
961获取并行队列最大并发度。
962
963**起始版本:** 12
964
965**参数:**
966
967| 名称 | 描述 |
968| -------- | -------- |
969| attr | 队列属性指针。  |
970
971**返回:**
972
973返回最大并发度。
974
975
976### ffrt_queue_attr_get_qos()
977
978```
979FFRT_C_API ffrt_qos_t ffrt_queue_attr_get_qos (const ffrt_queue_attr_t * attr)
980```
981**描述**
982获取队列QoS属性。
983
984**起始版本:** 10
985
986**参数:**
987
988| 名称 | 描述 |
989| -------- | -------- |
990| attr | 队列属性指针。  |
991
992**返回:**
993
994返回队列的QoS属性。
995
996
997### ffrt_queue_attr_get_timeout()
998
999```
1000FFRT_C_API uint64_t ffrt_queue_attr_get_timeout (const ffrt_queue_attr_t * attr)
1001```
1002**描述**
1003获取串行队列任务执行的timeout时间。
1004
1005**起始版本:** 10
1006
1007**参数:**
1008
1009| 名称 | 描述 |
1010| -------- | -------- |
1011| attr | 串行队列属性指针。  |
1012
1013**返回:**
1014
1015返回串行队列任务执行的timeout时间。
1016
1017
1018### ffrt_queue_attr_init()
1019
1020```
1021FFRT_C_API int ffrt_queue_attr_init (ffrt_queue_attr_t * attr)
1022```
1023**描述**
1024初始化队列属性。
1025
1026**起始版本:** 10
1027
1028**参数:**
1029
1030| 名称 | 描述 |
1031| -------- | -------- |
1032| attr | 队列属性指针。  |
1033
1034**返回:**
1035
1036执行成功时返回0, 执行失败时返回-1。
1037
1038
1039### ffrt_queue_attr_set_callback()
1040
1041```
1042FFRT_C_API void ffrt_queue_attr_set_callback (ffrt_queue_attr_t * attr, ffrt_function_header_t * f )
1043```
1044**描述**
1045设置串行队列超时回调方法。
1046
1047**起始版本:** 10
1048
1049**参数:**
1050
1051| 名称 | 描述 |
1052| -------- | -------- |
1053| attr | 串行队列属性指针。  |
1054| f | 超时回调方法执行体。  |
1055
1056
1057### ffrt_queue_attr_set_max_concurrency()
1058
1059```
1060FFRT_C_API void ffrt_queue_attr_set_max_concurrency (ffrt_queue_attr_t * attr, const int max_concurrency )
1061```
1062**描述**
1063设置并行队列最大并发度。
1064
1065**起始版本:** 12
1066
1067**参数:**
1068
1069| 名称 | 描述 |
1070| -------- | -------- |
1071| attr | 队列属性指针。  |
1072| max_concurrency | 最大并发度。  |
1073
1074
1075### ffrt_queue_attr_set_qos()
1076
1077```
1078FFRT_C_API void ffrt_queue_attr_set_qos (ffrt_queue_attr_t * attr, ffrt_qos_t qos )
1079```
1080**描述**
1081设置队列QoS属性。
1082
1083**起始版本:** 10
1084
1085**参数:**
1086
1087| 名称 | 描述 |
1088| -------- | -------- |
1089| attr | 队列属性指针。  |
1090| qos | QoS属性值。  |
1091
1092
1093### ffrt_queue_attr_set_timeout()
1094
1095```
1096FFRT_C_API void ffrt_queue_attr_set_timeout (ffrt_queue_attr_t * attr, uint64_t timeout_us )
1097```
1098**描述**
1099设置串行队列timeout属性。
1100
1101**起始版本:** 10
1102
1103**参数:**
1104
1105| 名称 | 描述 |
1106| -------- | -------- |
1107| attr | 串行队列属性指针。  |
1108| timeout_us | 串行队列任务执行的timeout时间。  |
1109
1110
1111### ffrt_queue_cancel()
1112
1113```
1114FFRT_C_API int ffrt_queue_cancel (ffrt_task_handle_t handle)
1115```
1116**描述**
1117取消队列中一个任务。
1118
1119**起始版本:** 10
1120
1121**参数:**
1122
1123| 名称 | 描述 |
1124| -------- | -------- |
1125| handle | 任务句柄。  |
1126
1127**返回:**
1128
1129取消任务成功返回0, 取消任务失败返回-1。
1130
1131
1132### ffrt_queue_create()
1133
1134```
1135FFRT_C_API ffrt_queue_t ffrt_queue_create (ffrt_queue_type_t type, const char * name, const ffrt_queue_attr_t * attr )
1136```
1137**描述**
1138创建队列。
1139
1140**起始版本:** 10
1141
1142**参数:**
1143
1144| 名称 | 描述 |
1145| -------- | -------- |
1146| type | 队列类型。  |
1147| name | 队列名字。  |
1148| attr | 队列属性。  |
1149
1150**返回:**
1151
1152创建队列成功返回非空队列句柄, 创建队列失败返回空指针。
1153
1154
1155### ffrt_queue_destroy()
1156
1157```
1158FFRT_C_API void ffrt_queue_destroy (ffrt_queue_t queue)
1159```
1160**描述**
1161销毁队列。
1162
1163**起始版本:** 10
1164
1165**参数:**
1166
1167| 名称 | 描述 |
1168| -------- | -------- |
1169| queue | 队列句柄。  |
1170
1171
1172### ffrt_queue_submit()
1173
1174```
1175FFRT_C_API void ffrt_queue_submit (ffrt_queue_t queue, ffrt_function_header_t * f, const ffrt_task_attr_t * attr )
1176```
1177**描述**
1178提交一个任务到队列中调度执行。
1179
1180**起始版本:** 10
1181
1182**参数:**
1183
1184| 名称 | 描述 |
1185| -------- | -------- |
1186| queue | 队列句柄。  |
1187| f | 任务的执行体。  |
1188| attr | 任务属性。  |
1189
1190
1191### ffrt_queue_submit_h()
1192
1193```
1194FFRT_C_API ffrt_task_handle_t ffrt_queue_submit_h (ffrt_queue_t queue, ffrt_function_header_t * f, const ffrt_task_attr_t * attr )
1195```
1196**描述**
1197提交一个任务到队列中调度执行,并返回任务句柄。
1198
1199**起始版本:** 10
1200
1201**参数:**
1202
1203| 名称 | 描述 |
1204| -------- | -------- |
1205| queue | 队列句柄。  |
1206| f | 任务的执行体。  |
1207| attr | 任务属性。  |
1208
1209**返回:**
1210
1211提交成功返回非空任务句柄, 提交失败返回空指针。
1212
1213
1214### ffrt_queue_wait()
1215
1216```
1217FFRT_C_API void ffrt_queue_wait (ffrt_task_handle_t handle)
1218```
1219**描述**
1220等待队列中一个任务执行完成。
1221
1222**起始版本:** 10
1223
1224**参数:**
1225
1226| 名称 | 描述 |
1227| -------- | -------- |
1228| handle | 任务句柄。  |
1229
1230
1231### ffrt_submit_base()
1232
1233```
1234FFRT_C_API void ffrt_submit_base (ffrt_function_header_t * f, const ffrt_deps_t * in_deps, const ffrt_deps_t * out_deps, const ffrt_task_attr_t * attr )
1235```
1236**描述**
1237提交任务调度执行。
1238
1239**起始版本:** 10
1240
1241**参数:**
1242
1243| 名称 | 描述 |
1244| -------- | -------- |
1245| f | 任务执行体封装的指针。  |
1246| in_deps | 输入依赖指针。  |
1247| out_deps | 输出依赖指针。  |
1248| attr | 任务属性。  |
1249
1250
1251### ffrt_submit_h_base()
1252
1253```
1254FFRT_C_API ffrt_task_handle_t ffrt_submit_h_base (ffrt_function_header_t * f, const ffrt_deps_t * in_deps, const ffrt_deps_t * out_deps, const ffrt_task_attr_t * attr )
1255```
1256**描述**
1257提交任务调度执行并返回任务句柄。
1258
1259**起始版本:** 10
1260
1261**参数:**
1262
1263| 名称 | 描述 |
1264| -------- | -------- |
1265| f | 任务执行体封装的指针。  |
1266| in_deps | 输入依赖指针。  |
1267| out_deps | 输出依赖指针。  |
1268| attr | 任务属性。  |
1269
1270**返回:**
1271
1272提交任务成功返回非空任务句柄, 提交任务失败返回空指针。
1273
1274
1275### ffrt_task_attr_destroy()
1276
1277```
1278FFRT_C_API void ffrt_task_attr_destroy (ffrt_task_attr_t * attr)
1279```
1280**描述**
1281销毁任务属性。
1282
1283**起始版本:** 10
1284
1285**参数:**
1286
1287| 名称 | 描述 |
1288| -------- | -------- |
1289| attr | 任务属性指针。  |
1290
1291
1292### ffrt_task_attr_get_delay()
1293
1294```
1295FFRT_C_API uint64_t ffrt_task_attr_get_delay (const ffrt_task_attr_t * attr)
1296```
1297**描述**
1298获取任务延迟时间。
1299
1300**起始版本:** 10
1301
1302**参数:**
1303
1304| 名称 | 描述 |
1305| -------- | -------- |
1306| attr | 任务属性指针。  |
1307
1308**返回:**
1309
1310返回任务的延迟时间。
1311
1312
1313### ffrt_task_attr_get_name()
1314
1315```
1316FFRT_C_API const char* ffrt_task_attr_get_name (const ffrt_task_attr_t * attr)
1317```
1318**描述**
1319获取任务名字。
1320
1321**起始版本:** 10
1322
1323**参数:**
1324
1325| 名称 | 描述 |
1326| -------- | -------- |
1327| attr | 任务属性指针。  |
1328
1329**返回:**
1330
1331获取任务名字成功返回非空指针, 获取任务名字失败返回空指针。
1332
1333
1334### ffrt_task_attr_get_qos()
1335
1336```
1337FFRT_C_API ffrt_qos_t ffrt_task_attr_get_qos (const ffrt_task_attr_t * attr)
1338```
1339**描述**
1340获取任务QoS。
1341
1342**起始版本:** 10
1343
1344**参数:**
1345
1346| 名称 | 描述 |
1347| -------- | -------- |
1348| attr | 任务属性指针。  |
1349
1350**返回:**
1351
1352返回任务的QoS,默认返回ffrt_qos_default。
1353
1354
1355### ffrt_task_attr_get_queue_priority()
1356
1357```
1358FFRT_C_API ffrt_queue_priority_t ffrt_task_attr_get_queue_priority (const ffrt_task_attr_t * attr)
1359```
1360**描述**
1361获取并行队列任务优先级。
1362
1363**起始版本:** 12
1364
1365**参数:**
1366
1367| 名称 | 描述 |
1368| -------- | -------- |
1369| attr | 任务属性指针。  |
1370
1371**返回:**
1372
1373返回任务优先级。
1374
1375
1376### ffrt_task_attr_get_stack_size()
1377
1378```
1379FFRT_C_API uint64_t ffrt_task_attr_get_stack_size (const ffrt_task_attr_t * attr)
1380```
1381**描述**
1382获取任务栈大小。
1383
1384**起始版本:** 12
1385
1386**参数:**
1387
1388| 名称 | 描述 |
1389| -------- | -------- |
1390| attr | 任务属性指针。  |
1391
1392**返回:**
1393
1394返回任务栈大小,单位是字节。
1395
1396
1397### ffrt_task_attr_init()
1398
1399```
1400FFRT_C_API int ffrt_task_attr_init (ffrt_task_attr_t * attr)
1401```
1402**描述**
1403初始化任务属性。
1404
1405**起始版本:** 10
1406
1407**参数:**
1408
1409| 名称 | 描述 |
1410| -------- | -------- |
1411| attr | 任务属性指针。  |
1412
1413**返回:**
1414
1415初始化任务属性成功返回0, 初始化任务属性失败返回-1。
1416
1417
1418### ffrt_task_attr_set_delay()
1419
1420```
1421FFRT_C_API void ffrt_task_attr_set_delay (ffrt_task_attr_t * attr, uint64_t delay_us )
1422```
1423**描述**
1424设置任务延迟时间。
1425
1426**起始版本:** 10
1427
1428**参数:**
1429
1430| 名称 | 描述 |
1431| -------- | -------- |
1432| attr | 任务属性指针。  |
1433| delay_us | 任务延迟时间,单位微秒。  |
1434
1435
1436### ffrt_task_attr_set_name()
1437
1438```
1439FFRT_C_API void ffrt_task_attr_set_name (ffrt_task_attr_t * attr, const char * name )
1440```
1441**描述**
1442设置任务名字。
1443
1444**起始版本:** 10
1445
1446**参数:**
1447
1448| 名称 | 描述 |
1449| -------- | -------- |
1450| attr | 任务属性指针。  |
1451| name | 任务名字。  |
1452
1453
1454### ffrt_task_attr_set_qos()
1455
1456```
1457FFRT_C_API void ffrt_task_attr_set_qos (ffrt_task_attr_t * attr, ffrt_qos_t qos )
1458```
1459**描述**
1460设置任务QoS。
1461
1462**起始版本:** 10
1463
1464**参数:**
1465
1466| 名称 | 描述 |
1467| -------- | -------- |
1468| attr | 任务属性指针。  |
1469| qos | 任务QoS。  |
1470
1471
1472### ffrt_task_attr_set_queue_priority()
1473
1474```
1475FFRT_C_API void ffrt_task_attr_set_queue_priority (ffrt_task_attr_t * attr, ffrt_queue_priority_t priority )
1476```
1477**描述**
1478设置并行队列任务优先级。
1479
1480**起始版本:** 12
1481
1482**参数:**
1483
1484| 名称 | 描述 |
1485| -------- | -------- |
1486| attr | 任务属性指针。  |
1487| priority | 任务优先级。  |
1488
1489
1490### ffrt_task_attr_set_stack_size()
1491
1492```
1493FFRT_C_API void ffrt_task_attr_set_stack_size (ffrt_task_attr_t * attr, uint64_t size )
1494```
1495**描述**
1496设置任务栈大小。
1497
1498**起始版本:** 12
1499
1500**参数:**
1501
1502| 名称 | 描述 |
1503| -------- | -------- |
1504| attr | 任务属性指针。  |
1505| size | 任务栈大小,单位是字节。  |
1506
1507
1508### ffrt_task_handle_dec_ref()
1509
1510```
1511FFRT_C_API uint32_t ffrt_task_handle_dec_ref (ffrt_task_handle_t handle)
1512```
1513**描述**
1514减少任务句柄的引用计数。
1515
1516**起始版本:** 12
1517
1518**参数:**
1519
1520| 名称 | 描述 |
1521| -------- | -------- |
1522| handle | 任务句柄  |
1523
1524**返回:**
1525
1526返回任务句柄原始引用计数。
1527
1528
1529### ffrt_task_handle_destroy()
1530
1531```
1532FFRT_C_API void ffrt_task_handle_destroy (ffrt_task_handle_t handle)
1533```
1534**描述**
1535销毁任务句柄。
1536
1537**起始版本:** 10
1538
1539**参数:**
1540
1541| 名称 | 描述 |
1542| -------- | -------- |
1543| handle | 任务句柄。  |
1544
1545
1546### ffrt_task_handle_inc_ref()
1547
1548```
1549FFRT_C_API uint32_t ffrt_task_handle_inc_ref (ffrt_task_handle_t handle)
1550```
1551**描述**
1552增加任务句柄的引用数。
1553
1554**起始版本:** 12
1555
1556**参数:**
1557
1558| 名称 | 描述 |
1559| -------- | -------- |
1560| handle | 任务句柄。  |
1561
1562**返回:**
1563
1564返回任务句柄原始引用计数。
1565
1566
1567### ffrt_this_task_get_id()
1568
1569```
1570FFRT_C_API uint64_t ffrt_this_task_get_id (void )
1571```
1572**描述**
1573获取任务id。
1574
1575**起始版本:** 10
1576
1577**返回:**
1578
1579返回当前任务的id。
1580
1581
1582### ffrt_this_task_get_qos()
1583
1584```
1585FFRT_C_API ffrt_qos_t ffrt_this_task_get_qos (void )
1586```
1587**描述**
1588获取任务QoS。
1589
1590**起始版本:** 12
1591
1592**返回:**
1593
1594返回任务QoS。
1595
1596
1597### ffrt_this_task_update_qos()
1598
1599```
1600FFRT_C_API int ffrt_this_task_update_qos (ffrt_qos_t qos)
1601```
1602**描述**
1603更新任务QoS。
1604
1605**起始版本:** 10
1606
1607**参数:**
1608
1609| 名称 | 描述 |
1610| -------- | -------- |
1611| qos | 当前任务待更新的QoS。  |
1612
1613**返回:**
1614
1615更新任务QoS成功返回0, 更新任务QoS失败返回-1。
1616
1617
1618### ffrt_timer_start()
1619
1620```
1621FFRT_C_API ffrt_timer_t ffrt_timer_start (ffrt_qos_t qos, uint64_t timeout, void * data, ffrt_timer_cb cb, bool repeat )
1622```
1623**描述**
1624启动计时器。
1625
1626**起始版本:** 12
1627
1628**参数:**
1629
1630| 名称 | 描述 |
1631| -------- | -------- |
1632| qos | QoS等级。  |
1633| timeout | 超时时间。  |
1634| data | 超时后回调函数的入参。  |
1635| cb | 超时执行的回调函数。  |
1636| repeat | 是否重复执行该定时器(该功能暂未支持)。  |
1637
1638**返回:**
1639
1640返回定时器句柄。
1641
1642
1643### ffrt_timer_stop()
1644
1645```
1646FFRT_C_API int ffrt_timer_stop (ffrt_qos_t qos, ffrt_timer_t handle )
1647```
1648**描述**
1649关闭计时器。
1650
1651**起始版本:** 12
1652
1653**参数:**
1654
1655| 名称 | 描述 |
1656| -------- | -------- |
1657| qos | QoS等级。  |
1658| handle | 定时器句柄。  |
1659
1660**返回:**
1661
1662关闭成功返回0, 关闭失败返回-1。
1663
1664
1665### ffrt_usleep()
1666
1667```
1668FFRT_C_API int ffrt_usleep (uint64_t usec)
1669```
1670**描述**
1671睡眠调用线程固定的时间。
1672
1673**起始版本:** 10
1674
1675**参数:**
1676
1677| 名称 | 描述 |
1678| -------- | -------- |
1679| usec | 睡眠时间,单位是微秒。  |
1680
1681**返回:**
1682
1683执行成功时返回ffrt_success。 执行失败时返回ffrt_error。
1684
1685
1686### ffrt_wait()
1687
1688```
1689FFRT_C_API void ffrt_wait (void )
1690```
1691**描述**
1692等待之前所有提交任务完成,当前任务开始执行。
1693
1694**起始版本:** 10
1695
1696
1697### ffrt_wait_deps()
1698
1699```
1700FFRT_C_API void ffrt_wait_deps (const ffrt_deps_t * deps)
1701```
1702**描述**
1703等待依赖的任务完成,当前任务开始执行。
1704
1705**起始版本:** 10
1706
1707**参数:**
1708
1709| 名称 | 描述 |
1710| -------- | -------- |
1711| deps | 依赖的指针。  |
1712
1713
1714### ffrt_yield()
1715
1716```
1717FFRT_C_API void ffrt_yield (void )
1718```
1719**描述**
1720当前任务主动放权,让其他任务有机会调度执行。
1721
1722**起始版本:** 10
1723