涂鸦TuyaOS
提供通用的异步任务调度机制,将工作任务发送到指定的工作队列,工作队列会串行的执行队列里的工作任务。资源丰富的平台可以根据自身的需求,创建自己的工作队列,并通过工作队列调度一些工作任务。
接口描述
创建工作队列
OPERATE_RET
tal_workqueue_create(CONST UINT16_T queue_len, THREAD_CFG_E *thread_cfg, WORKQUEUE_HANDLE *handle);
OPERATE_RET tal_workqueue_create(CONST UINT16_T queue_len, THREAD_CFG_T *thread_cfg, WORKQUEUE_HANDLE *handle)
create and initialize a workqueue which runs in thread context
添加工作到工作队列
OPERATE_RET tal_workqueue_schedule(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data)
put work task in workqueue
示例代码
#define TY_WQ_STACK_SIZE 2048
#define TY_WQ_TRD_PRIO 3
#define TY_WQ_WORK_NAME "wq-0"
VOID sample_work_cb(VOID *data)
{
PR_DEBUG("work is here %p", data);
}
OPERATE_RET test_work_queue()
{
int rt = OPRT_OK;
WORKQUEUE_HANDLE ty_wq_hand = NULL;
THREAD_CFG_E thread_cfg = {TY_WQ_STACK_SIZE, TY_WQ_TRD_PRIO, TY_WQ_WORK_NAME};
EXPECT_EQ(rt, OPRT_OK);
EXPECT_EQ(rt, OPRT_OK);
return OPRT_OK;
}