工作队列 和等待队列

工作队列就是有某些关系排在一块一个链表上的 任务列表,便于统一关系这些有关系任务(work)。这个work 不是线程,但是可以挂靠在其他线程中运行。

等待队列就是一个链表 为了维护一个等待某个资源而休眠的进程的列表;一般最好自己维护一个线程

唤醒队列线程就是修改其状态 task为可运行,用于调度过程。

 

schedule_work   和   wake_up  区别

 

schedule_work 依赖于系统默认工作队列 最终会调用 wake_up_process(worker->task);

如果任务不繁重,用cpu默认共享队列线程。 如果事情比较多比较耗时,那就自己创建一个线程额外维护,因为系统不知道什么时候唤醒你的任务 比较合适。

wake_up 是针对自己创建等待队列的唤醒动作,而且 把任务移除等待队列的过程,list_del_init(&wait->task_list);

wait_event 是wake_up 反操作 , 就是把当前等待进程进入 等待队列的过程。

            wait_event里面是循环 判断是否继续执行还是等待。如果满足跳出循环的条件,执行跳出循环,继续下面工作;否则就要继续等待(睡眠让出cpu)

 

schedule_work是通过把work  加载在系统线程池里面等着被调度, wake_up唤醒的是自己创建的线程。

 

所以工作队列是一些任务合集,等待队列是一些线程合集。schedule_work 做的是把这work 挂靠的task 唤醒,wake_up

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值