Completion

来源:互联网 发布:linux新建文档命令 编辑:程序博客网 时间:2024/03/29 13:01

completion是一种轻量级的机制,它允许一个线程告诉另一个线程某个工作已经完成。
completion的典型应用是模块退出时的内核线程终止。

代码必须包含<linux/completion.h>。使用的代码如下:
 
1.创建completion
    DECLARE_COMPLETION(my_completion);/* 创建completion(声明+初始化) */
   
    如果必须动态的创建和初始化completion使用下面的方法:
    struct completion my_completion;/* 动态声明completion 结构体*/
    void init_completion(&my_completion);/*动态初始化completion*/

2.等待completion
    void wait_for_completion(struct completion *c);/* 等待completion */

3.唤醒completion

    void complete(struct completion *c);/*唤醒一个等待completion的线程*/
    void complete_all(struct completion *c);/*唤醒所有等待completion的线程*/

注意:/*如果未使用completion_all,completion可重复使用;否则必须使用以下函数重新初始化completion*/
      INIT_COMPLETION(struct completion c);/*快速重新初始化completion*/
     

原创粉丝点击