Linux中的completion
来源:互联网 发布:数据分析研究生 编辑:程序博客网 时间:2024/05/01 10:59
一般信号量的的处理会限制在一个函数内,但是有时会函数A的处理的前提条件是函数B,A必须等待B处理后才能继续,可以用信号量来进行处理,但linux kernel提供complete的方式。使用方式如下:
•头文件#include ,数据结构为struct completion ,初始化为init_completion(struct completion * comp ) ,也可以直接使用DECLARE_COMPLETION( comp );
•在A函数中,如果需要等待其他的处理,使用void wait_for_completion(struct completion * comp ); 则在这个位置上将处于非中断的sleep,进行等待,也就是相关的线程/进程,用户是无法kill的。
•在B函数,如果已经处理完,可以交由A函数处理,有下面两种方式
•void complete(struct completion * comp ); 如果要执行A必须等待B先执行,B执行后,A可以继续执行。如果A需要再次执行,则需要确保下一次B执行完。如果连续执行两次B,则可以执行两次A,第三次A要等第三次B执行完。
•void complete_all(struct completion * comp ); 只要B执行完,A就可以执行,无论执行多少次。如果需要再等待B的直系个可以使用INIT_COMPLETION(struct completion * comp ) 。重新初始化completion即可。
•void complete_and_exit(struct completion * comp ,long retval ) ; 这个处理具有complete的功能外,还将调用它的线程/进程终止。可用于一些无限循环的场景,例如受到某个cleaned up的信息后,e通知用户程序终止,允许A函数执行。
- Linux中的completion
- Linux中的completion
- Linux中的completion使用
- linux设备驱动中的completion(kernel-4.7)
- linux completion
- Linux Completion
- Eclipse中的Hippie Completion
- Linux 的 completion机制
- linux completion接口
- linux kernel completion
- linux completion接口
- Linux completion理解
- linux bash-completion
- Linux 的 completion机制
- Linux 的 completion机制
- linux completion 笔记
- Linux同步(一)-------completion
- Linux 的 completion机制
- Struts2 标签库讲解
- django官方文档——Model 的 Meta 选项
- WAVEFORMATEX格式说明
- java 反编译利器!!
- 自定义Toast
- Linux中的completion
- Linux服务器性能小结
- django官方文档——发送邮件
- 从签到脚本到自动化(一)
- js表单验证非法字符
- django官方文档——Django settings
- 继续记录JAVA学习
- 【转】 se43修改sap标准菜单,登陆界面
- 从签到脚本到自动化(二)