Android linux 工作队列

记录下 工作队列的使用

一、使用过程

1.创建工作队列
2.初始化工作,实现工作的回调函数
3.向工作队列提交工作

//1-3 步骤如:初始化函数xxx_init中实现如下函数
xxx_init(){
//初始化
queue = create_singlethread_workqueue("hello");
INIT_WORK(&work, work_handler);
...

//在初始化函数最后将一个任务加入到工作队列中
queue_work(queue, &work);
...
}

回调函数

static void work_handler(struct work_struct *work)
{
     //具体的操作
     queue_work(queue, &work);
}

二、工作队列
1.创建工作队列

create_singlethread_workqueue(name)       // 仅对应一个内核线程
create_workqueue(name)                            // 对应多个内核线程

2.创建工作

静态地创建工作项(类似宏 直接在函数体外进行声明):

DECLARE_WORK(n, f)
DECLARE_DELAYED_WORK(n, f)

动态地创建工作项(在函数体内使用,如init 函数中):

INIT_WORK(struct work_struct work, work_func_t func); 
PREPARE_WORK(struct work_struct work, work_func_t func); 

3.向工作队列中提交工作

int queue_work(workqueue_t *queue, work_t *work); 
int queue_delayed_work(workqueue_t *queue, work_t *work, unsigned long delay); 

4.将工作提交到默认的工作队列中(不用自己创建工作队列,使用系统默认的)

int schedule_work(struct work_struct *work);
int schedule_delayed_work(struct work_struct *work, unsigned long delay);

参考地址:
https://blog.youkuaiyun.com/stn_lcd/article/details/78846414

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值