# FFRT ## 概述 FFRT(Function Flowè¿è¡Œæ—¶ï¼‰æ˜¯æ”¯æŒFunction Flow编程模型的软件è¿è¡Œæ—¶åº“,用于调度执行开å‘者基于Function Flow编程模型开å‘的应用。 **系统能力:** SystemCapability.Resourceschedule.Ffrt.Core **起始版本:** 10 ## 汇总 ### 文件 | åç§° | æè¿° | | -------- | -------- | | [condition_variable.h](condition__variable_8h.md) | 声明æ¡ä»¶å˜é‡æä¾›çš„C接å£ã€‚ | | [loop.h](loop_8h.md) | 声明FFRT LOOP机制的C接å£ã€‚ | | [mutex.h](mutex_8h.md) | 声明mutexæä¾›çš„C接å£ã€‚ | | [queue.h](queue_8h.md) | 声明串行队列æä¾›çš„C接å£ã€‚ | | [sleep.h](sleep_8h.md) | 声明sleepå’Œyield C接å£ã€‚ | | [task.h](task_8h.md) | 声明任务æä¾›çš„C接å£ã€‚ | | [timer.h](timer_8h.md) | 声明定时器的C接å£ã€‚ | | [type_def.h](type__def_8h.md) | 定义通用类型。 | ### 结构体 | åç§° | æè¿° | | -------- | -------- | | struct [ffrt_function_header_t](ffrt__function__header__t.md) | 任务执行体。 | | struct [ffrt_dependence_t](ffrt__dependence__t.md) | ä¾èµ–æ•°æ®ç»“构。 | | struct [ffrt_deps_t](ffrt__deps__t.md) | ä¾èµ–结构定义。 | | struct [ffrt_task_attr_t](ffrt__task__attr__t.md) | 并行任务属性结构。 | | struct [ffrt_queue_attr_t](ffrt__queue__attr__t.md) | 串行队列属性结构。 | | struct [ffrt_condattr_t](ffrt__condattr__t.md) | FFRTæ¡ä»¶å˜é‡å±žæ€§ç»“构。 | | struct [ffrt_mutexattr_t](ffrt__mutexattr__t.md) | FFRTé”属性结构。 | | struct [ffrt_mutex_t](ffrt__mutex__t.md) | FFRT互斥é”结构。 | | struct [ffrt_cond_t](ffrt__cond__t.md) | FFRTæ¡ä»¶å˜é‡ç»“构。 | ### 类型定义 | åç§° | æè¿° | | -------- | -------- | | typedef void\* **ffrt_loop_t** | | | typedef void\* ffrt_queue_t | é˜Ÿåˆ—å¥æŸ„。 | | typedef int ffrt_qos_t | qos类型。 | | typedef void(\*ffrt_function_t ) (void\*) | 任务执行函数指针类型。 | | typedef void\* ffrt_task_handle_t | å¹¶è¡Œä»»åŠ¡å¥æŸ„。 | | typedef void (\*[ffrt_poller_cb](#ffrt_poller_cb)) (void\* data, uint32_t event) | ffrt_poller_cb callback定义 | | typedef void (\*[ffrt_timer_cb](#ffrt_timer_cb)) (void\* data) | ffrt_timer_cb callback定义 | | typedef int [ffrt_timer_t](#ffrt_timer_t) | ffrt_timer_t 类型定义 | ### 枚举 | åç§° | æè¿° | | -------- | -------- | | [ffrt_queue_type_t](#ffrt_queue_type_t) { ffrt_queue_serial = 0, ffrt_queue_concurrent, ffrt_queue_max } | 队列类型。 | | [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 } | 任务的优先级类型。 | | [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类型。 | | [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/>} | 多ç§ç±»åž‹æ•°æ®ç»“构分é…大å°å®šä¹‰ã€‚ | | [ffrt_function_kind_t](#ffrt_function_kind_t) { ffrt_function_kind_general, ffrt_function_kind_queue } | 任务类型。 | | [ffrt_dependence_type_t](#ffrt_dependence_type_t) { ffrt_dependence_data, ffrt_dependence_task } | ä¾èµ–类型。 | | [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错误ç 。 | ### 函数 | åç§° | æè¿° | | -------- | -------- | | 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) | åˆå§‹åŒ–æ¡ä»¶å˜é‡ã€‚ | | FFRT_C_API int [ffrt_cond_signal](#ffrt_cond_signal) ([ffrt_cond_t](ffrt__cond__t.md)\* cond) | 唤醒阻塞在æ¡ä»¶å˜é‡ä¸Šçš„一个任务。 | | FFRT_C_API int [ffrt_cond_broadcast](#ffrt_cond_broadcast) ([ffrt_cond_t](ffrt__cond__t.md)\* cond) | 唤醒阻塞在æ¡ä»¶å˜é‡ä¸Šçš„æ‰€æœ‰ä»»åŠ¡ã€‚ | | 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) | æ¡ä»¶å˜é‡ç‰å¾…函数,æ¡ä»¶å˜é‡ä¸æ»¡è¶³æ—¶é˜»å¡žå½“å‰ä»»åŠ¡ã€‚ | | 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) | æ¡ä»¶å˜é‡è¶…æ—¶ç‰å¾…函数,æ¡ä»¶å˜é‡ä¸æ»¡è¶³æ—¶é˜»å¡žå½“å‰ä»»åŠ¡ï¼Œè¶…æ—¶ç‰å¾…返回. | | FFRT_C_API int [ffrt_cond_destroy](#ffrt_cond_destroy) ([ffrt_cond_t](ffrt__cond__t.md)\* cond) | é”€æ¯æ¡ä»¶å˜é‡ã€‚ | | FFRT_C_API ffrt_loop_t [ffrt_loop_create](#ffrt_loop_create) (ffrt_queue_t queue) | 创建loop队列。 | | FFRT_C_API int [ffrt_loop_destroy](#ffrt_loop_destroy) (ffrt_loop_t loop) | 销æ¯loop队对象。 | | FFRT_C_API int [ffrt_loop_run](#ffrt_loop_run) (ffrt_loop_t loop) | å¼€å¯loop循环。 | | FFRT_C_API void [ffrt_loop_stop](#ffrt_loop_stop) (ffrt_loop_t loop) | åœæ¢loop循环。 | | 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上的监å¬äº‹ä»¶ã€‚ | | 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上å¯åŠ¨å®šæ—¶å™¨ã€‚ | | 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定时器。 | | 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。 | | FFRT_C_API int [ffrt_mutex_lock](#ffrt_mutex_lock) ([ffrt_mutex_t](ffrt__mutex__t.md)\* mutex) | 获å–mutex。 | | FFRT_C_API int [ffrt_mutex_unlock](#ffrt_mutex_unlock) ([ffrt_mutex_t](ffrt__mutex__t.md)\* mutex) | 释放mutex。 | | FFRT_C_API int [ffrt_mutex_trylock](#ffrt_mutex_trylock) ([ffrt_mutex_t](ffrt__mutex__t.md)\* mutex) | å°è¯•获å–mutex。 | | FFRT_C_API int [ffrt_mutex_destroy](#ffrt_mutex_destroy) ([ffrt_mutex_t](ffrt__mutex__t.md)\* mutex) | 销æ¯mutex。 | | FFRT_C_API int [ffrt_queue_attr_init](#ffrt_queue_attr_init) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | åˆå§‹åŒ–串行队列属性。 | | FFRT_C_API void [ffrt_queue_attr_destroy](#ffrt_queue_attr_destroy) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | 销æ¯ä¸²è¡Œé˜Ÿåˆ—属性。 | | 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属性。 | | 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属性。 | | 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属性。 | | 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时间。 | | 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) | 设置串行队列超时回调方法。 | | 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) | 获å–串行队列超时回调方法。 | | 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) | 设置并行队列最大并å‘度。 | | 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) | 获å–并行队列最大并å‘度。 | | 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) | 创建队列。 | | FFRT_C_API void [ffrt_queue_destroy](#ffrt_queue_destroy) (ffrt_queue_t queue) | 销æ¯é˜Ÿåˆ—。 | | 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) | æäº¤ä¸€ä¸ªä»»åŠ¡åˆ°é˜Ÿåˆ—ä¸è°ƒåº¦æ‰§è¡Œã€‚ | | 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) | æäº¤ä¸€ä¸ªä»»åŠ¡åˆ°é˜Ÿåˆ—ä¸è°ƒåº¦æ‰§è¡Œï¼Œå¹¶è¿”å›žä»»åŠ¡å¥æŸ„。 | | FFRT_C_API void [ffrt_queue_wait](#ffrt_queue_wait) (ffrt_task_handle_t handle) | ç‰å¾…队列ä¸ä¸€ä¸ªä»»åŠ¡æ‰§è¡Œå®Œæˆã€‚ | | FFRT_C_API int [ffrt_queue_cancel](#ffrt_queue_cancel) (ffrt_task_handle_t handle) | å–æ¶ˆé˜Ÿåˆ—ä¸ä¸€ä¸ªä»»åŠ¡ã€‚ | | FFRT_C_API ffrt_queue_t[ffrt_get_main_queue](#ffrt_get_main_queue) () | 获å–主线程队列。 | | FFRT_C_API ffrt_queue_t[ffrt_get_current_queue](#ffrt_get_current_queue) () | 获å–应用 Worker(ArkTs)线程队列。 | | FFRT_C_API int [ffrt_usleep](#ffrt_usleep) (uint64_t usec) | ç¡çœ usec微秒。 | | FFRT_C_API void [ffrt_yield](#ffrt_yield) (void) | 当å‰ä»»åŠ¡ä¸»åŠ¨æ”¾æƒï¼Œè®©å…¶ä»–任务有机会调度执行。 | | FFRT_C_API int [ffrt_task_attr_init](#ffrt_task_attr_init) ([ffrt_task_attr_t](ffrt__task__attr__t.md)\* attr) | åˆå§‹åŒ–任务属性。 | | 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) | 设置任务åå—。 | | 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) | 获å–任务åå—。 | | FFRT_C_API void [ffrt_task_attr_destroy](#ffrt_task_attr_destroy) ([ffrt_task_attr_t](ffrt__task__attr__t.md)\* attr) | 销æ¯ä»»åŠ¡å±žæ€§ã€‚ | | 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。 | | 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。 | | 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) | 设置任务延迟时间。 | | 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) | 获å–任务延迟时间。 | | 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) | 设置并行队列任务优先级。 | | 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) | 获å–并行队列任务优先级。 | | FFRT_C_API int [ffrt_this_task_update_qos](#ffrt_this_task_update_qos) (ffrt_qos_t qos) | 更新任务qos。 | | FFRT_C_API ffrt_qos_t[ffrt_this_task_get_qos](#ffrt_this_task_get_qos) () | 获å–任务qos。 | | FFRT_C_API uint64_t [ffrt_this_task_get_id](#ffrt_this_task_get_id) (void) | 获å–任务id。 | | 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) | 申请函数执行结构的内å˜ã€‚ | | 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) | æäº¤ä»»åŠ¡è°ƒåº¦æ‰§è¡Œã€‚ | | 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) | æäº¤ä»»åŠ¡è°ƒåº¦æ‰§è¡Œå¹¶è¿”å›žä»»åŠ¡å¥æŸ„。 | | FFRT_C_API void [ffrt_task_handle_destroy](#ffrt_task_handle_destroy) (ffrt_task_handle_t handle) | 销æ¯ä»»åС奿Ÿ„。 | | FFRT_C_API void [ffrt_wait_deps](#ffrt_wait_deps) (const [ffrt_deps_t](ffrt__deps__t.md)\* deps) | ç‰å¾…ä¾èµ–的任务完æˆï¼Œå½“å‰ä»»åŠ¡å¼€å§‹æ‰§è¡Œã€‚ | | FFRT_C_API void [ffrt_wait](#ffrt_wait) (void) | ç‰å¾…之剿‰€æœ‰æäº¤ä»»åŠ¡å®Œæˆï¼Œå½“å‰ä»»åŠ¡å¼€å§‹æ‰§è¡Œã€‚ | | 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) | å¯åŠ¨è®¡æ—¶å™¨ã€‚ | | FFRT_C_API int [ffrt_timer_stop](#ffrt_timer_stop) (ffrt_qos_t qos, [ffrt_timer_t](#ffrt_timer_t) handle) | å…³é—计时器。 | ### å˜é‡ | åç§° | æè¿° | | -------- | -------- | | ffrt_function_t[ffrt_function_header_t::exec](#exec) | 任务执行函数 | | ffrt_function_t[ffrt_function_header_t::destroy](#destroy) | 任务销æ¯å‡½æ•° | | uint64_t [ffrt_function_header_t::reserve](#reserve) [2] | ä¿ç•™ä½. | | [ffrt_dependence_type_t](#ffrt_dependence_type_t)[ffrt_dependence_t::type](#type) | ä¾èµ–类型 | | const void\* [ffrt_dependence_t::ptr](#ptr) | ä¾èµ–æ•°æ®åœ°å€ | | uint32_t [ffrt_deps_t::len](#len) | ä¾èµ–æ•°é‡ | | const [ffrt_dependence_t](ffrt__dependence__t.md)\* [ffrt_deps_t::items](#items) | ä¾èµ–æ•°æ® | | uint32_t [ffrt_task_attr_t::storage](#storage-46) [(ffrt_task_attr_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] | 任务属性所å 空间 | | uint32_t [ffrt_queue_attr_t::storage](#storage-36) [(ffrt_queue_attr_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] | 串行队列属性所å 空间 | | long [ffrt_condattr_t::storage](#storage-56) | FFRTæ¡ä»¶å˜é‡å±žæ€§æ‰€å 空间 | | long [ffrt_mutexattr_t::storage](#storage-66) | FFRTé”属性所å 空间 | | uint32_t [ffrt_mutex_t::storage](#storage-26) [(ffrt_mutex_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] | FFRTäº’æ–¥é”æ‰€å 空间 | | uint32_t [ffrt_cond_t::storage](#storage-16) [(ffrt_cond_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] | FFRTæ¡ä»¶å˜é‡æ‰€å 空间 | ## 类型定义说明 ### ffrt_poller_cb ``` typedef void(*ffrt_poller_cb) (void* data, uint32_t event) ``` **æè¿°** ffrt_poller_cb callback定义 ### ffrt_timer_cb ``` typedef void(*ffrt_timer_cb) (void* data) ``` **æè¿°** ffrt_timer_cb callback定义 ### ffrt_timer_t ``` typedef int ffrt_timer_t ``` **æè¿°** ffrt_timer_t 类型定义 ## 枚举类型说明 ### ffrt_dependence_type_t ``` enum ffrt_dependence_type_t ``` **æè¿°** ä¾èµ–类型。 | 枚举åç§° | æè¿° | | -------- | -------- | | ffrt_dependence_data | æ•°æ®ä¾èµ–类型 | | ffrt_dependence_task | 任务ä¾èµ–类型 | ### ffrt_error_t ``` enum ffrt_error_t ``` **æè¿°** FFRT错误ç 。 | 枚举åç§° | 枚举值 | æè¿° | | -------- | -------- | -------- | | ffrt_error | -1 | 失败 | | ffrt_success | 0 | æˆåŠŸ | | ffrt_error_nomem | ENOMEM | 内å˜ä¸è¶³ | | ffrt_error_timedout | ETIMEDOUT | è¶…æ—¶ | | ffrt_error_busy | EBUSY | 釿–°å°è¯• | | ffrt_error_inval | EINVAL | å€¼æ— æ•ˆ | ### ffrt_function_kind_t ``` enum ffrt_function_kind_t ``` **æè¿°** 任务类型。 | åç§° | æè¿° | | -------- | -------- | | ffrt_function_kind_general | 通用任务类型 | | ffrt_function_kind_queue | 队列任务类型 | ### ffrt_qos_default_t ``` enum ffrt_qos_default_t ``` **æè¿°** 任务的qos类型。 | 枚举åç§° | 枚举值 | æè¿° | | -------- | -------- | -------- | | ffrt_qos_inherit | ffrt_qos_inherit | 继承当å‰ä»»åŠ¡qos属性 | | ffrt_qos_background | ffrt_qos_background | åŽå°ä»»åŠ¡ | | ffrt_qos_utility | ffrt_qos_utility | 实时工具 | | ffrt_qos_default | ffrt_qos_default | 默认类型 | | ffrt_qos_user_initiated | ffrt_qos_user_initiated | 用户期望 | ### ffrt_queue_type_t ``` enum ffrt_queue_type_t ``` **æè¿°** 队列类型。 | 枚举åç§° | 枚举值 | æè¿° | | -------- | -------- | -------- | | ffrt_queue_serial | 0 | 串行队列 | | ffrt_queue_concurrent | | 并行队列 | | ffrt_queue_max | | æ— æ•ˆé˜Ÿåˆ—ç±»åž‹ | ### ffrt_storage_size_t ``` enum ffrt_storage_size_t ``` **æè¿°** 多ç§ç±»åž‹æ•°æ®ç»“构分é…大å°å®šä¹‰ã€‚ | 枚举åç§° | 枚举值 | æè¿° | | -------- | -------- | -------- | | 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 | æ¡ä»¶å˜é‡ | | ffrt_queue_attr_storage_size | 128 | 队列属性 | ### ffrt_task_priority_t ``` enum ffrt_task_priority_t ``` **æè¿°** 任务的优先级类型。 | 枚举åç§° | 枚举值 | æè¿° | | -------- | -------- | -------- | | ffrt_task_priority_immediate | 0 | immediate 优先级 | | ffrt_task_priority_high | 1 | high 优先级 | | ffrt_task_priority_low | 2 | low 优先级 | | ffrt_task_priority_idle | | lowest 优先级 | ## 函数说明 ### ffrt_alloc_auto_managed_function_storage_base() ``` FFRT_C_API void* ffrt_alloc_auto_managed_function_storage_base (ffrt_function_kind_t kind) ``` **æè¿°** 申请函数执行结构的内å˜ã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | kind | 函数执行结构类型,支æŒé€šç”¨å’Œé˜Ÿåˆ—函数执行结构类型。 | **返回:** 申请函数执行结构æˆåŠŸè¿”å›žéžç©ºæŒ‡é’ˆï¼Œ 申请函数执行结构失败返回空指针。 ### ffrt_cond_broadcast() ``` FFRT_C_API int ffrt_cond_broadcast (ffrt_cond_t* cond) ``` **æè¿°** 唤醒阻塞在æ¡ä»¶å˜é‡ä¸Šçš„æ‰€æœ‰ä»»åŠ¡ã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | cond | æ¡ä»¶å˜é‡æŒ‡é’ˆã€‚ | **返回:** 唤醒æˆåŠŸè¿”å›žffrt_success, 唤醒失败返回ffrt_error_inval。 ### ffrt_cond_destroy() ``` FFRT_C_API int ffrt_cond_destroy (ffrt_cond_t* cond) ``` **æè¿°** é”€æ¯æ¡ä»¶å˜é‡ã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | cond | æ¡ä»¶å˜é‡æŒ‡é’ˆã€‚ | **返回:** é”€æ¯æ¡ä»¶å˜é‡æˆåŠŸè¿”å›žffrt_success, é”€æ¯æ¡ä»¶å˜é‡å¤±è´¥è¿”回ffrt_error_inval。 ### ffrt_cond_init() ``` FFRT_C_API int ffrt_cond_init (ffrt_cond_t* cond, const ffrt_condattr_t* attr ) ``` **æè¿°** åˆå§‹åŒ–æ¡ä»¶å˜é‡ã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | cond | æ¡ä»¶å˜é‡æŒ‡é’ˆã€‚ | | attr | æ¡ä»¶å˜é‡å±žæ€§æŒ‡é’ˆã€‚ | **返回:** åˆå§‹åŒ–æ¡ä»¶å˜é‡æˆåŠŸè¿”å›žffrt_success, åˆå§‹åŒ–æ¡ä»¶å˜é‡å¤±è´¥è¿”回ffrt_error_inval。 ### ffrt_cond_signal() ``` FFRT_C_API int ffrt_cond_signal (ffrt_cond_t* cond) ``` **æè¿°** 唤醒阻塞在æ¡ä»¶å˜é‡ä¸Šçš„一个任务。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | cond | æ¡ä»¶å˜é‡æŒ‡é’ˆã€‚ | **返回:** 唤醒æˆåŠŸè¿”å›žffrt_success, 唤醒失败返回ffrt_error_inval。 ### ffrt_cond_timedwait() ``` FFRT_C_API int ffrt_cond_timedwait (ffrt_cond_t* cond, ffrt_mutex_t* mutex, const struct timespec* time_point ) ``` **æè¿°** æ¡ä»¶å˜é‡è¶…æ—¶ç‰å¾…函数,æ¡ä»¶å˜é‡ä¸æ»¡è¶³æ—¶é˜»å¡žå½“å‰ä»»åŠ¡ï¼Œè¶…æ—¶ç‰å¾…返回. **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | cond | æ¡ä»¶å˜é‡æŒ‡é’ˆã€‚ | | mutex | mutex指针。 | | time_point | 最大ç‰å¾…到的时间点,超过这个时间点ç‰å¾…返回。 | **返回:** ç‰å¾…åŽè¢«æˆåŠŸå”¤é†’è¿”å›žffrt_success, ç‰å¾…超时返回ffrt_error_timedout。 ç‰å¾…失败ffrt_error_inval。 ### ffrt_cond_wait() ``` FFRT_C_API int ffrt_cond_wait (ffrt_cond_t* cond, ffrt_mutex_t* mutex ) ``` **æè¿°** æ¡ä»¶å˜é‡ç‰å¾…函数,æ¡ä»¶å˜é‡ä¸æ»¡è¶³æ—¶é˜»å¡žå½“å‰ä»»åŠ¡ã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | cond | æ¡ä»¶å˜é‡æŒ‡é’ˆã€‚ | | mutex | mutex指针。 | **返回:** ç‰å¾…åŽè¢«æˆåŠŸå”¤é†’è¿”å›žffrt_success, ç‰å¾…失败返回ffrt_error_inval。 ### ffrt_get_current_queue() ``` FFRT_C_API ffrt_queue_t ffrt_get_current_queue () ``` **æè¿°** 获å–应用 Worker(ArkTs)线程队列。 **起始版本:** 12 **返回:** 创建队列æˆåŠŸè¿”å›žéžç©ºé˜Ÿåˆ—奿Ÿ„, 创建队列失败返回空指针。 ### ffrt_get_main_queue() ``` FFRT_C_API ffrt_queue_t ffrt_get_main_queue () ``` **æè¿°** 获å–主线程队列。 **起始版本:** 12 **返回:** 创建队列æˆåŠŸè¿”å›žéžç©ºé˜Ÿåˆ—奿Ÿ„, 创建队列失败返回空指针。 ### ffrt_loop_create() ``` FFRT_C_API ffrt_loop_t ffrt_loop_create (ffrt_queue_t queue) ``` **æè¿°** 创建loop队列。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | queue | å¹¶å‘队列。 | **返回:** 创建æˆåŠŸè¿”å›žffrt_loop_t对象,失败返回空指针。 ### ffrt_loop_destroy() ``` FFRT_C_API int ffrt_loop_destroy (ffrt_loop_t loop) ``` **æè¿°** 销æ¯loop队对象。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | loop | loop对象。 | **返回:** é”€æ¯æˆåŠŸè¿”å›ž0,-1是销æ¯å¤±è´¥ã€‚ ### ffrt_loop_epoll_ctl() ``` FFRT_C_API int ffrt_loop_epoll_ctl (ffrt_loop_t loop, int op, int fd, uint32_t events, void* data, ffrt_poller_cb cb ) ``` **æè¿°** 管ç†loop上的监å¬äº‹ä»¶ã€‚ **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | loop | loop对象。 | | op | fdæ“作符。 | | fd | 事件æè¿°ç¬¦ã€‚ | | events | 事件。 | | data | 事件å˜åŒ–时触å‘的回调函数的入å‚。 | | cb | 事件å˜åŒ–时触å‘的回调函数。 | **返回:** æˆåŠŸè¿”å›ž0,失败返回-1. ### ffrt_loop_run() ``` FFRT_C_API int ffrt_loop_run (ffrt_loop_t loop) ``` **æè¿°** å¼€å¯loop循环。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | loop | loop对象。 | **返回:** loop循环失败返回-1,0是æˆåŠŸã€‚ ### ffrt_loop_stop() ``` FFRT_C_API void ffrt_loop_stop (ffrt_loop_t loop) ``` **æè¿°** åœæ¢loop循环。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | loop | loop对象。 | ### ffrt_loop_timer_start() ``` FFRT_C_API ffrt_timer_t ffrt_loop_timer_start (ffrt_loop_t loop, uint64_t timeout, void* data, ffrt_timer_cb cb, bool repeat ) ``` **æè¿°** 在ffrt loop上å¯åŠ¨å®šæ—¶å™¨ã€‚ **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | loop | loop对象。 | | timeout | è¶…æ—¶æ—¶é—´. | | data | 事件å˜åŒ–时触å‘的回调函数的入å‚。 | | cb | 事件å˜åŒ–时触å‘的回调函数。 | | repeat | 是å¦é‡å¤æ‰§è¡Œè¯¥å®šæ—¶å™¨ã€‚ | **返回:** è¿”å›žå®šæ—¶å™¨å¥æŸ„。 ### ffrt_loop_timer_stop() ``` FFRT_C_API int ffrt_loop_timer_stop (ffrt_loop_t loop, ffrt_timer_t handle ) ``` **æè¿°** åœæ¢ffrt loop定时器。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | loop | loop对象。 | | handle | timer对象。 | **返回:** æˆåŠŸè¿”å›ž0,失败返回-1. ### ffrt_mutex_destroy() ``` FFRT_C_API int ffrt_mutex_destroy (ffrt_mutex_t* mutex) ``` **æè¿°** 销æ¯mutex。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | mutex | mutex指针。 | **返回:** 销æ¯mutexæˆåŠŸè¿”å›žffrt_success, 销æ¯mutex失败返回ffrt_error_inval。 ### ffrt_mutex_init() ``` FFRT_C_API int ffrt_mutex_init (ffrt_mutex_t* mutex, const ffrt_mutexattr_t* attr ) ``` **æè¿°** åˆå§‹åŒ–mutex。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | mutex | mutex指针。 | | attr | mutex属性。 | **返回:** åˆå§‹åŒ–mutexæˆåŠŸè¿”å›žffrt_success, åˆå§‹åŒ–mutex失败返回ffrt_error或ffrt_error_inval。 ### ffrt_mutex_lock() ``` FFRT_C_API int ffrt_mutex_lock (ffrt_mutex_t* mutex) ``` **æè¿°** 获å–mutex。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | mutex | mutex指针。 | **返回:** 获å–mutexæˆåŠŸè¿”å›žffrt_success, 获å–mutex失败返回ffrt_error_inval, 或者阻塞当å‰ä»»åŠ¡ã€‚ ### ffrt_mutex_trylock() ``` FFRT_C_API int ffrt_mutex_trylock (ffrt_mutex_t* mutex) ``` **æè¿°** å°è¯•获å–mutex。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | mutex | mutex指针。 | **返回:** 获å–mutexæˆåŠŸè¿”å›žffrt_success, 获å–mutex失败返回ffrt_error_inval或ffrt_error_busy。 ### ffrt_mutex_unlock() ``` FFRT_C_API int ffrt_mutex_unlock (ffrt_mutex_t* mutex) ``` **æè¿°** 释放mutex。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | mutex | mutex指针。 | **返回:** 释放mutexæˆåŠŸè¿”å›žffrt_success, 释放mutex失败返回ffrt_error_inval。 ### ffrt_queue_attr_destroy() ``` FFRT_C_API void ffrt_queue_attr_destroy (ffrt_queue_attr_t* attr) ``` **æè¿°** 销æ¯ä¸²è¡Œé˜Ÿåˆ—属性。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | ### ffrt_queue_attr_get_callback() ``` FFRT_C_API ffrt_function_header_t* ffrt_queue_attr_get_callback (const ffrt_queue_attr_t* attr) ``` **æè¿°** 获å–串行队列超时回调方法。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | **返回:** 返回串行队列超时回调方法。 ### ffrt_queue_attr_get_max_concurrency() ``` FFRT_C_API int ffrt_queue_attr_get_max_concurrency (ffrt_queue_attr_t* attr) ``` **æè¿°** 获å–并行队列最大并å‘度。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 队列属性指针。 | **返回:** 返回最大并å‘度。 ### ffrt_queue_attr_get_qos() ``` FFRT_C_API ffrt_qos_t ffrt_queue_attr_get_qos (const ffrt_queue_attr_t* attr) ``` **æè¿°** 获å–串行队列qos属性。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | **返回:** 返回串行队列的qos属性。 ### ffrt_queue_attr_get_timeout() ``` FFRT_C_API uint64_t ffrt_queue_attr_get_timeout (const ffrt_queue_attr_t* attr) ``` **æè¿°** 获å–串行队列任务执行的timeout时间。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | **返回:** 返回串行队列任务执行的timeout时间。 ### ffrt_queue_attr_init() ``` FFRT_C_API int ffrt_queue_attr_init (ffrt_queue_attr_t* attr) ``` **æè¿°** åˆå§‹åŒ–串行队列属性。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | **返回:** 执行æˆåŠŸæ—¶è¿”å›ž0, 执行失败时返回-1。 ### ffrt_queue_attr_set_callback() ``` FFRT_C_API void ffrt_queue_attr_set_callback (ffrt_queue_attr_t* attr, ffrt_function_header_t* f ) ``` **æè¿°** 设置串行队列超时回调方法。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | | f | 超时回调方法执行体。 | ### ffrt_queue_attr_set_max_concurrency() ``` FFRT_C_API void ffrt_queue_attr_set_max_concurrency (ffrt_queue_attr_t* attr, const int max_concurrency ) ``` **æè¿°** 设置并行队列最大并å‘度。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 队列属性指针。 | | max_concurrency | 最大并å‘度。 | ### ffrt_queue_attr_set_qos() ``` FFRT_C_API void ffrt_queue_attr_set_qos (ffrt_queue_attr_t* attr, ffrt_qos_t qos ) ``` **æè¿°** 设置串行队列qos属性。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | | qos | qos属性值。 | ### ffrt_queue_attr_set_timeout() ``` FFRT_C_API void ffrt_queue_attr_set_timeout (ffrt_queue_attr_t* attr, uint64_t timeout_us ) ``` **æè¿°** 设置串行队列timeout属性。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 串行队列属性指针。 | | timeout_us | 串行队列任务执行的timeout时间。 | ### ffrt_queue_cancel() ``` FFRT_C_API int ffrt_queue_cancel (ffrt_task_handle_t handle) ``` **æè¿°** å–æ¶ˆé˜Ÿåˆ—ä¸ä¸€ä¸ªä»»åŠ¡ã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | handle | ä»»åŠ¡å¥æŸ„。 | **返回:** å–æ¶ˆä»»åŠ¡æˆåŠŸè¿”å›ž0, å–æ¶ˆä»»åŠ¡å¤±è´¥è¿”å›ž-1。 ### ffrt_queue_create() ``` FFRT_C_API ffrt_queue_t ffrt_queue_create (ffrt_queue_type_t type, const char* name, const ffrt_queue_attr_t* attr ) ``` **æè¿°** 创建队列。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | type | 队列类型。 | | name | 队列åå—。 | | attr | 队列属性。 | **返回:** 创建队列æˆåŠŸè¿”å›žéžç©ºé˜Ÿåˆ—奿Ÿ„, 创建队列失败返回空指针。 ### ffrt_queue_destroy() ``` FFRT_C_API void ffrt_queue_destroy (ffrt_queue_t queue) ``` **æè¿°** 销æ¯é˜Ÿåˆ—。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | queue | é˜Ÿåˆ—å¥æŸ„。 | ### ffrt_queue_submit() ``` FFRT_C_API void ffrt_queue_submit (ffrt_queue_t queue, ffrt_function_header_t* f, const ffrt_task_attr_t* attr ) ``` **æè¿°** æäº¤ä¸€ä¸ªä»»åŠ¡åˆ°é˜Ÿåˆ—ä¸è°ƒåº¦æ‰§è¡Œã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | queue | é˜Ÿåˆ—å¥æŸ„。 | | f | 任务的执行体。 | | attr | 任务属性。 | ### ffrt_queue_submit_h() ``` FFRT_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 ) ``` **æè¿°** æäº¤ä¸€ä¸ªä»»åŠ¡åˆ°é˜Ÿåˆ—ä¸è°ƒåº¦æ‰§è¡Œï¼Œå¹¶è¿”å›žä»»åŠ¡å¥æŸ„。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | queue | é˜Ÿåˆ—å¥æŸ„。 | | f | 任务的执行体。 | | attr | 任务属性。 | **返回:** æäº¤æˆåŠŸè¿”å›žéžç©ºä»»åС奿Ÿ„, æäº¤å¤±è´¥è¿”回空指针。 ### ffrt_queue_wait() ``` FFRT_C_API void ffrt_queue_wait (ffrt_task_handle_t handle) ``` **æè¿°** ç‰å¾…队列ä¸ä¸€ä¸ªä»»åŠ¡æ‰§è¡Œå®Œæˆã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | handle | ä»»åŠ¡å¥æŸ„。 | ### ffrt_submit_base() ``` FFRT_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 ) ``` **æè¿°** æäº¤ä»»åŠ¡è°ƒåº¦æ‰§è¡Œã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | f | 任务执行体å°è£…的指针。 | | in_deps | 输入ä¾èµ–指针。 | | out_deps | 输出ä¾èµ–指针。 | | attr | 任务属性。 | ### ffrt_submit_h_base() ``` FFRT_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 ) ``` **æè¿°** æäº¤ä»»åŠ¡è°ƒåº¦æ‰§è¡Œå¹¶è¿”å›žä»»åŠ¡å¥æŸ„。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | f | 任务执行体å°è£…的指针。 | | in_deps | 输入ä¾èµ–指针。 | | out_deps | 输出ä¾èµ–指针。 | | attr | 任务属性。 | **返回:** æäº¤ä»»åŠ¡æˆåŠŸè¿”å›žéžç©ºä»»åС奿Ÿ„, æäº¤ä»»åŠ¡å¤±è´¥è¿”å›žç©ºæŒ‡é’ˆã€‚ ### ffrt_task_attr_destroy() ``` FFRT_C_API void ffrt_task_attr_destroy (ffrt_task_attr_t* attr) ``` **æè¿°** 销æ¯ä»»åŠ¡å±žæ€§ã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | ### ffrt_task_attr_get_delay() ``` FFRT_C_API uint64_t ffrt_task_attr_get_delay (const ffrt_task_attr_t* attr) ``` **æè¿°** 获å–任务延迟时间。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | **返回:** 返回任务的延迟时间。 ### ffrt_task_attr_get_name() ``` FFRT_C_API const char* ffrt_task_attr_get_name (const ffrt_task_attr_t* attr) ``` **æè¿°** 获å–任务åå—。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | **返回:** 获å–任务åå—æˆåŠŸè¿”å›žéžç©ºæŒ‡é’ˆï¼Œ 获å–任务åå—失败返回空指针。 ### ffrt_task_attr_get_qos() ``` FFRT_C_API ffrt_qos_t ffrt_task_attr_get_qos (const ffrt_task_attr_t* attr) ``` **æè¿°** 获å–任务qos。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | **返回:** 返回任务的qos,默认返回ffrt_qos_default。 ### ffrt_task_attr_get_queue_priority() ``` FFRT_C_API ffrt_queue_priority_t ffrt_task_attr_get_queue_priority (const ffrt_task_attr_t* attr) ``` **æè¿°** 获å–并行队列任务优先级。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | **返回:** 返回任务优先级。 ### ffrt_task_attr_init() ``` FFRT_C_API int ffrt_task_attr_init (ffrt_task_attr_t* attr) ``` **æè¿°** åˆå§‹åŒ–任务属性。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | **返回:** åˆå§‹åŒ–任务属性æˆåŠŸè¿”å›ž0, åˆå§‹åŒ–任务属性失败返回-1。 ### ffrt_task_attr_set_delay() ``` FFRT_C_API void ffrt_task_attr_set_delay (ffrt_task_attr_t* attr, uint64_t delay_us ) ``` **æè¿°** 设置任务延迟时间。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | | delay_us | 任务延迟时间,å•ä½å¾®ç§’。 | ### ffrt_task_attr_set_name() ``` FFRT_C_API void ffrt_task_attr_set_name (ffrt_task_attr_t* attr, const char* name ) ``` **æè¿°** 设置任务åå—。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | | name | 任务åå—。 | ### ffrt_task_attr_set_qos() ``` FFRT_C_API void ffrt_task_attr_set_qos (ffrt_task_attr_t* attr, ffrt_qos_t qos ) ``` **æè¿°** 设置任务qos。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | | qos | 任务qos类型。 | ### ffrt_task_attr_set_queue_priority() ``` FFRT_C_API void ffrt_task_attr_set_queue_priority (ffrt_task_attr_t* attr, ffrt_queue_priority_t priority ) ``` **æè¿°** 设置并行队列任务优先级。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | attr | 任务属性指针。 | | priority | 任务优先级。 | ### ffrt_task_handle_destroy() ``` FFRT_C_API void ffrt_task_handle_destroy (ffrt_task_handle_t handle) ``` **æè¿°** 销æ¯ä»»åС奿Ÿ„。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | handle | ä»»åŠ¡å¥æŸ„。 | ### ffrt_this_task_get_id() ``` FFRT_C_API uint64_t ffrt_this_task_get_id (void ) ``` **æè¿°** 获å–任务id。 **起始版本:** 10 **返回:** 返回当å‰ä»»åŠ¡çš„id。 ### ffrt_this_task_get_qos() ``` FFRT_C_API ffrt_qos_t ffrt_this_task_get_qos () ``` **æè¿°** 获å–任务qos。 **起始版本:** 12 **返回:** 返回任务qos。 ### ffrt_this_task_update_qos() ``` FFRT_C_API int ffrt_this_task_update_qos (ffrt_qos_t qos) ``` **æè¿°** 更新任务qos。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | qos | 当å‰ä»»åŠ¡å¾…æ›´æ–°çš„qos。 | **返回:** 更新任务qosæˆåŠŸè¿”å›ž0, 更新任务qos失败返回-1。 ### ffrt_timer_start() ``` FFRT_C_API ffrt_timer_t ffrt_timer_start (ffrt_qos_t qos, uint64_t timeout, void* data, ffrt_timer_cb cb, bool repeat ) ``` **æè¿°** å¯åŠ¨è®¡æ—¶å™¨ã€‚ **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | qos | qosç‰çº§ã€‚ | | timeout | 超时时间。 | | data | è¶…æ—¶åŽå›žè°ƒå‡½æ•°çš„å…¥å‚。 | | cb | 超时执行的回调函数。 | | repeat | 是å¦é‡å¤æ‰§è¡Œè¯¥å®šæ—¶å™¨ã€‚ | **返回:** è¿”å›žå®šæ—¶å™¨å¥æŸ„。 ### ffrt_timer_stop() ``` FFRT_C_API int ffrt_timer_stop (ffrt_qos_t qos, ffrt_timer_t handle ) ``` **æè¿°** å…³é—计时器。 **起始版本:** 12 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | qos | qosç‰çº§ã€‚ | | handle | å®šæ—¶å™¨å¥æŸ„。 | **返回:** 0 代表返回æˆåŠŸï¼Œå…¶ä½™æ˜¯å¤±è´¥ã€‚ ### ffrt_usleep() ``` FFRT_C_API int ffrt_usleep (uint64_t usec) ``` **æè¿°** ç¡çœ usec微秒。 **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | usec | ç¡çœ 时间,å•ä½å¾®ç§’。 | **返回:** 执行æˆåŠŸæ—¶è¿”å›žffrt_success。 ### ffrt_wait() ``` FFRT_C_API void ffrt_wait (void ) ``` **æè¿°** ç‰å¾…之剿‰€æœ‰æäº¤ä»»åŠ¡å®Œæˆï¼Œå½“å‰ä»»åŠ¡å¼€å§‹æ‰§è¡Œã€‚ **起始版本:** 10 ### ffrt_wait_deps() ``` FFRT_C_API void ffrt_wait_deps (const ffrt_deps_t* deps) ``` **æè¿°** ç‰å¾…ä¾èµ–的任务完æˆï¼Œå½“å‰ä»»åŠ¡å¼€å§‹æ‰§è¡Œã€‚ **起始版本:** 10 **傿•°:** | åç§° | æè¿° | | -------- | -------- | | deps | ä¾èµ–的指针。 | ### ffrt_yield() ``` FFRT_C_API void ffrt_yield (void ) ``` **æè¿°** 当å‰ä»»åŠ¡ä¸»åŠ¨æ”¾æƒï¼Œè®©å…¶ä»–任务有机会调度执行。 **起始版本:** 10 ## å˜é‡è¯´æ˜Ž ### destroy ``` ffrt_function_t ffrt_function_header_t::destroy ``` **æè¿°** 任务销æ¯å‡½æ•° ### exec ``` ffrt_function_t ffrt_function_header_t::exec ``` **æè¿°** 任务执行函数 ### items ``` const ffrt_dependence_t* ffrt_deps_t::items ``` **æè¿°** ä¾èµ–æ•°æ® ### len ``` uint32_t ffrt_deps_t::len ``` **æè¿°** ä¾èµ–æ•°é‡ ### ptr ``` const void* ffrt_dependence_t::ptr ``` **æè¿°** ä¾èµ–æ•°æ®åœ°å€ ### reserve ``` uint64_t ffrt_function_header_t::reserve[2] ``` **æè¿°** ä¿ç•™ä½. ### storage [1/6] ``` uint32_t ffrt_cond_t::storage[(ffrt_cond_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] ``` **æè¿°** FFRTæ¡ä»¶å˜é‡æ‰€å 空间 ### storage [2/6] ``` uint32_t ffrt_mutex_t::storage[(ffrt_mutex_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] ``` **æè¿°** FFRTäº’æ–¥é”æ‰€å 空间 ### storage [3/6] ``` uint32_t ffrt_queue_attr_t::storage[(ffrt_queue_attr_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] ``` **æè¿°** 串行队列属性所å 空间 ### storage [4/6] ``` uint32_t ffrt_task_attr_t::storage[(ffrt_task_attr_storage_size + sizeof(uint32_t) - 1)/sizeof(uint32_t)] ``` **æè¿°** 任务属性所å 空间 ### storage [5/6] ``` long ffrt_condattr_t::storage ``` **æè¿°** FFRTæ¡ä»¶å˜é‡å±žæ€§æ‰€å 空间 ### storage [6/6] ``` long ffrt_mutexattr_t::storage ``` **æè¿°** FFRTé”属性所å 空间 ### type ``` ffrt_dependence_type_t ffrt_dependence_t::type ``` **æè¿°** ä¾èµ–类型