Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27530
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-21 17:34
文章分类
文章存档

2015年(24)

我的朋友

分类: LINUX

2015-08-06 16:04:20

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) |
给主人留下些什么吧!~~