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