diff --git a/resourceschedule/ffrt/c/queue.h b/resourceschedule/ffrt/c/mode similarity index 88% rename from resourceschedule/ffrt/c/queue.h rename to resourceschedule/ffrt/c/mode index 19c87469a687b3e6a9c14dde04ffdbd94f9fbf53..76ea5d99c0c461e9f6436a9a3660803b9e3b4827 100644 --- a/resourceschedule/ffrt/c/queue.h +++ b/resourceschedule/ffrt/c/mode @@ -151,6 +151,33 @@ FFRT_C_API void ffrt_queue_attr_set_max_concurrency(ffrt_queue_attr_t* attr, con */ FFRT_C_API int ffrt_queue_attr_get_max_concurrency(const ffrt_queue_attr_t* attr); +/** + * @brief Sets the execution mode of a queue attribute. + * + * This interface specifies whether tasks in the queue are executed in coroutine mode or thread mode. + * By default, tasks are executed in coroutine mode. + * Set legacy_mode to true to enable thread-based execution. + * + * @param attr Queue attribute pointer. + * @param legacy_mode Indicates whether to enable thread-based execution mode. + - true: Tasks are executed as native threads (legacy mode). + - false: Tasks are executed as coroutines (default). + * @since 20 + */ +FFRT_C_API void ffrt_queue_attr_set_mode(ffrt_queue_attr_t* attr, const bool legacy_mode); + +/** + * @brief Gets the execution mode of a queue attribute. + * + * This interface returns whether tasks in the queue are configured to run in thread-based execution mode (legacy mode). + * + * @param attr Queue attribute pointer. + * @return Returns true if tasks are executed as native threads (legacy mode). + returns false if tasks are executed as coroutines (default). + * @since 20 + */ +FFRT_C_API bool ffrt_queue_attr_get_mode(const ffrt_queue_attr_t* attr); + /** * @brief Creates a queue. * diff --git a/resourceschedule/ffrt/ffrt.ndk.json b/resourceschedule/ffrt/ffrt.ndk.json index 84474b74e9e78a4696851d5e8fb3a719875d21b7..de2afba87b9e19d1a03cdd859331c745015b29a5 100644 --- a/resourceschedule/ffrt/ffrt.ndk.json +++ b/resourceschedule/ffrt/ffrt.ndk.json @@ -127,6 +127,8 @@ { "name": "ffrt_loop_timer_stop" }, { "name": "ffrt_queue_attr_set_max_concurrency" }, { "name": "ffrt_queue_attr_get_max_concurrency" }, + { "name": "ffrt_queue_attr_set_mode" }, + { "name": "ffrt_queue_attr_get_mode" }, { "name": "ffrt_get_main_queue" }, { "name": "ffrt_get_current_queue" }, { "name": "ffrt_task_attr_set_queue_priority" },