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