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