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