void wait_for_completion(struct completion *c);
等待一个 completion 事件发出.
void complete(struct completion *c);
void complete_all(struct completion *c);
发出一个 completion 事件. completion 唤醒, 最多, 一个等待着的线程, 而 complete_all 唤醒全部等待者.
这个只是简单的唤醒而已, 可以多个任务等待同一个 completion , 并且排队,可以一个一个唤醒,也可以全部唤醒。PS:completion 使用独占等待 因此唤醒时一次只能唤醒一个
void wait_event(wait_queue_head_t q, int condition);
使进程在给定队列上睡眠, 直到给定条件值为真值.
这个在唤醒之后还要比较condition 是否为真,如果不为真,还要重新进入睡眠
PS:wait_event使用非独占等待 唤醒时都唤醒 然后每个被唤醒的都要判断条件是否满足 若未满足 则继续唤醒
阅读(479) | 评论(0) | 转发(0) |