Complete机制用于多线程之间的数据同步。
类似于信号量,比信号量安全。
定义:kernel/sched/completion.c
主要函数:
wait_for_completion():等待释放,每次加入的地方会一次入队,会顺序释放
complete():释放一个
complete_all():释放所有
DECLARE_COMPLETION(); 初始化
示例:
DECLARE_COMPLETION(my_complete_lock);
void threadA()
{
wait_for_completion(&my_complete_lock);
//阻塞,等待my_complete_lock释放
}
void threadB()
{
//释放my_complete_lock,threadA可以运行
complete(&my_complete_lock);
}
在其它文件使用,可以在.h文件中声明:
extern struct completion my_complete_lock;