Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2164879
  • 博文数量: 374
  • 博客积分: 7276
  • 博客等级: 少将
  • 技术积分: 5669
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-06 16:35
文章分类

全部博文(374)

文章存档

2013年(23)

2012年(153)

2011年(198)

分类: LINUX

2012-05-22 18:17:27

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使用非独占等待 唤醒时都唤醒 然后每个被唤醒的都要判断条件是否满足 若未满足 则继续唤醒
阅读(4166) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~