RT-Thread API参考手册  3.1.1
嵌入式实时操作系统
工作队列

工作队列接口 更多...

结构体

struct  rt_workqueue
 工作队列控制块 更多...
 
struct  rt_work
 工作回调函数信息 更多...
 

函数

struct rt_workqueuert_workqueue_create (const char *name, rt_uint16_t stack_size, rt_uint8_t priority)
 创建工作队列 更多...
 
rt_err_t rt_workqueue_destroy (struct rt_workqueue *queue)
 销毁工作队列 更多...
 
rt_err_t rt_workqueue_dowork (struct rt_workqueue *queue, struct rt_work *work)
 增加工作队列任务 更多...
 
rt_err_t rt_workqueue_cancel_work (struct rt_workqueue *queue, struct rt_work *work)
 取消工作队列任务 更多...
 
rt_err_t rt_workqueue_cancel_work_sync (struct rt_workqueue *queue, struct rt_work *work)
 同步取消工作队列任务 更多...
 
rt_inline void rt_work_init (struct rt_work *work, void(*work_func)(struct rt_work *work, void *work_data), void *work_data)
 初始化work 更多...
 

详细描述

工作队列接口

函数说明

struct rt_workqueue* rt_workqueue_create ( const char *  name,
rt_uint16_t  stack_size,
rt_uint8_t  priority 
)

创建工作队列

调用该函数接口后,内核首先从动态内存堆中分配一个工作队列控制块,然后对该控制块进行基本的初始化,并创建一个工作队列处理线程。

参数
name工作队列名称
stack_size工作队列处理线程堆栈空间大小
priority工作队列处理线程的优先级
返回
创建成功则返回工作队列句柄,失败则返回 RT_NULL
rt_err_t rt_workqueue_destroy ( struct rt_workqueue queue)

销毁工作队列

调用这个函数接口后,系统会删除这个工作队列的处理线程,然后释放相应的工作队列控制块占有的内存。

参数
queue工作队列句柄
返回
RT_EOK
rt_err_t rt_workqueue_dowork ( struct rt_workqueue queue,
struct rt_work work 
)

增加工作队列任务

调用该函数可以向指定的工作队列中添加任务。

参数
queue工作队列句柄
work任务控制块
返回
RT_EOK 加入任务成功;-RT_EBUSY 任务已在执行中,请勿重复执行。
rt_err_t rt_workqueue_cancel_work ( struct rt_workqueue queue,
struct rt_work work 
)

取消工作队列任务

调用该函数可以取消任务队列中尚未执行的任务。

参数
queue工作队列句柄
work任务控制块
返回
RT_EOK 取消成功;-RT_EBUSY 任务已在执行中,不能取消。
rt_err_t rt_workqueue_cancel_work_sync ( struct rt_workqueue queue,
struct rt_work work 
)

同步取消工作队列任务

调用该函数可以取消循环任务,如果任务正在执行中,则等待该次任务完成后取消。

参数
queue工作队列句柄
work任务控制块
返回
RT_EOK(如果任务已在执行中,等待任务完成后取消)
rt_inline void rt_work_init ( struct rt_work work,
void(*)(struct rt_work *work, void *work_data)  work_func,
void *  work_data 
)

初始化work

调用该函数可以初始化指定work的链表,并指定任务回调函数和待处理的数据指针。

参数
workwork控制块
work_funcwork回调处理函数
work_data待处理的数据缓冲区指针