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