进程调度API之complete_all
来源:互联网 发布:世界中心知乎 编辑:程序博客网 时间:2024/06/06 02:25
void complete_all(struct completion *x)的作用和complete的作用区别在于complete_all会唤醒在struct completion *x上等待的所有的task,而complete 只能wakeup一个task其源码分析如下:void complete_all(struct completion *x){unsigned long flags;spin_lock_irqsave(&x->wait.lock, flags);x->done = UINT_MAX;__wake_up_locked(&x->wait, TASK_NORMAL, 0);spin_unlock_irqrestore(&x->wait.lock, flags);}可以看到x->done 和complete 相比不再执行加1操作,而是直接赋予最大值然后调用__wake_up_locked,其第三个参数nr 为0 表示wakeup 所有的task。原因在上一篇博文中已经分析过了。
阅读全文
0 0
- 进程调度API之complete_all
- 进程调度API之__wake_up
- 进程调度API之__wake_up_sync
- 进程调度API之preempt_count_dec_and_test
- 进程调度API之should_resched
- 进程调度API之preempt_schedule
- 进程调度API之add_wait_queue_exclusive
- 进程调度API之autoremove_wake_function
- 进程调度API之complete
- 进程调度API之completion_done
- 进程调度API之wait_for_completion_x
- 进程调度API之finish_wait
- 进程调度API之init_waitqueue_entry
- 进程调度API之init_waitqueue_head
- 进程调度API之prepare_to_wait
- 进程调度API之set_cpus_allowed_ptr
- 进程调度API之set_user_nice
- 进程调度API之sleep_on_spinunlock
- 《得到》5个帮你改变坏习惯的方法
- BashShell笔记 (一)
- 一键打包出多个不同包名,不同应用名称和图标的APK
- 实现支持“.”和“*”的正则表达式匹配
- 微软产品试用
- 进程调度API之complete_all
- Intent组件的安全机制
- IntelliJ IDEA2017 激活方法 最新的(亲测可用)
- 《算法(第4版)第2章:排序》学习笔记
- 生产制造词汇BOM、MPS、MRP、APS、MES、WMS、JIT、VMI
- 关于Altium Designer图纸打印记录
- 关于我对于写博客写文章的理解
- 机器学习技法-Adaptive Boosting
- linux 搭建mysql环境