1e41f4b71Sopenharmony_ci# queue.h
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Overview
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciThe **queue.h** file declares the queue interfaces in C.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**Since**: 10
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**Related module**: [FFRT](_f_f_r_t.md)
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## Summary
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci### Types
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci| Name| Description| 
19e41f4b71Sopenharmony_ci| -------- | -------- |
20e41f4b71Sopenharmony_ci|  typedef void\* [ffrt_queue_t](_f_f_r_t.md) | Defines the handle to a queue. | 
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci### Enums
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci| Name| Description| 
26e41f4b71Sopenharmony_ci| -------- | -------- |
27e41f4b71Sopenharmony_ci| [ffrt_queue_type_t](_f_f_r_t.md#ffrt_queue_type_t) { [ffrt_queue_serial](_f_f_r_t.md) = 0, [ffrt_queue_concurrent](_f_f_r_t.md), [ffrt_queue_max](_f_f_r_t.md) } | Enumerates the queue types. | 
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci### Functions
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| Name| Description| 
33e41f4b71Sopenharmony_ci| -------- | -------- |
34e41f4b71Sopenharmony_ci| FFRT_C_API int [ffrt_queue_attr_init](_f_f_r_t.md#ffrt_queue_attr_init) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | Initializes a queue attribute. | 
35e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_attr_destroy](_f_f_r_t.md#ffrt_queue_attr_destroy) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | Destroys a queue attribute. | 
36e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_attr_set_qos](_f_f_r_t.md#ffrt_queue_attr_set_qos) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr, [ffrt_qos_t](_f_f_r_t.md#types) qos)| Sets the queue QoS. | 
37e41f4b71Sopenharmony_ci| FFRT_C_API [ffrt_qos_t](_f_f_r_t.md#types) [ffrt_queue_attr_get_qos](_f_f_r_t.md#ffrt_queue_attr_get_qos) (const [ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr)| Obtains the queue QoS. | 
38e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_attr_set_timeout](_f_f_r_t.md#ffrt_queue_attr_set_timeout) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr, uint64_t timeout_us) | Sets the queue timeout. | 
39e41f4b71Sopenharmony_ci| FFRT_C_API uint64_t [ffrt_queue_attr_get_timeout](_f_f_r_t.md#ffrt_queue_attr_get_timeout) (const [ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | Obtains the queue timeout. | 
40e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_attr_set_callback](_f_f_r_t.md#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) | Sets a callback that is invoked when a queue task times out. | 
41e41f4b71Sopenharmony_ci| FFRT_C_API [ffrt_function_header_t](ffrt__function__header__t.md)\*  [ffrt_queue_attr_get_callback](_f_f_r_t.md#ffrt_queue_attr_get_callback) (const [ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | Obtains the callback that is invoked when a queue task times out. | 
42e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_attr_set_max_concurrency](_f_f_r_t.md#ffrt_queue_attr_set_max_concurrency) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr, const int max_concurrency) | Sets the maximum concurrency for a queue, which must be a concurrent queue. | 
43e41f4b71Sopenharmony_ci| FFRT_C_API int [ffrt_queue_attr_get_max_concurrency](_f_f_r_t.md#ffrt_queue_attr_get_max_concurrency) ([ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | Obtains the maximum concurrency of a queue, which must be a concurrent queue. | 
44e41f4b71Sopenharmony_ci| FFRT_C_API [ffrt_queue_t](_f_f_r_t.md)[ffrt_queue_create](_f_f_r_t.md#ffrt_queue_create) ([ffrt_queue_type_t](_f_f_r_t.md#ffrt_queue_type_t) type, const char\* name, const [ffrt_queue_attr_t](ffrt__queue__attr__t.md)\* attr) | Creates a queue. | 
45e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_destroy](_f_f_r_t.md#ffrt_queue_destroy) ([ffrt_queue_t](_f_f_r_t.md) queue) | Destroys a queue. | 
46e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_submit](_f_f_r_t.md#ffrt_queue_submit) ([ffrt_queue_t](_f_f_r_t.md) queue, [ffrt_function_header_t](ffrt__function__header__t.md)\* f, const [ffrt_task_attr_t](ffrt__task__attr__t.md)\* attr) | Submits a task to a queue. | 
47e41f4b71Sopenharmony_ci| FFRT_C_API [ffrt_task_handle_t](_f_f_r_t.md)[ffrt_queue_submit_h](_f_f_r_t.md#ffrt_queue_submit_h) ([ffrt_queue_t](_f_f_r_t.md) queue, [ffrt_function_header_t](ffrt__function__header__t.md)\* f, const [ffrt_task_attr_t](ffrt__task__attr__t.md)\* attr) | Submits a task to a queue, and obtains the task handle. | 
48e41f4b71Sopenharmony_ci| FFRT_C_API void [ffrt_queue_wait](_f_f_r_t.md#ffrt_queue_wait) ([ffrt_task_handle_t](_f_f_r_t.md) handle) | Waits until a task in the queue is complete. | 
49e41f4b71Sopenharmony_ci| FFRT_C_API int [ffrt_queue_cancel](_f_f_r_t.md#ffrt_queue_cancel) ([ffrt_task_handle_t](_f_f_r_t.md) handle) | Cancels a task in the queue. | 
50e41f4b71Sopenharmony_ci| FFRT_C_API [ffrt_queue_t](_f_f_r_t.md)[ffrt_get_main_queue](_f_f_r_t.md#ffrt_get_main_queue) () | Obtains the main thread queue. | 
51e41f4b71Sopenharmony_ci| FFRT_C_API [ffrt_queue_t](_f_f_r_t.md)[ffrt_get_current_queue](_f_f_r_t.md#ffrt_get_current_queue) () | Obtains the ArkTS Worker thread queue. | 
52