社区
Linux_Kernel
帖子详情
wait_for_completion 和wait_event_interruptible 区别
unbutun
2009-12-09 04:51:05
看了一下wait_for_completion 和wait_event_interruptible
这两个除了建立用不同的函数之外,功能是一样的,都可以等另外一边的动作完成,在执行这边,而且源码里两者
都包含了schedule调度
那么completion 和 waitqueue有什么区别呢,我是指实际上的东西,请不要把书本的拿过来,谢谢了。
...全文
2464
15
打赏
收藏
wait_for_completion 和wait_event_interruptible 区别
看了一下wait_for_completion 和wait_event_interruptible 这两个除了建立用不同的函数之外,功能是一样的,都可以等另外一边的动作完成,在执行这边,而且源码里两者 都包含了schedule调度 那么completion 和 waitqueue有什么区别呢,我是指实际上的东西,请不要把书本的拿过来,谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
duhuidavid
2010-08-27
打赏
举报
回复
1
wait_event实际上是一套函数,应对各种情况,如wake_up_interruptible,wake_up_nr, prepare_to_wait_exclusive, wake_up_interruptible_nr, wake_up_all 等。
而wait_for_completion 是wait_event函数组中的一种特殊情况。它表示不可中断,一次可以唤醒一个或全部,但不能指定唤醒个数。wake_up_nr 就可以指定唤醒个数。wait_for_completion底层实现和wake_up_nr一样,都是从队列尾部插入,以实现单个唤醒。而wait_evevnt 是从队列前面插入,所以只能唤醒全部,而不能单个唤醒。
总之,wait_for_completion是wait—event函数组中的一种特例。
unbutun
2010-03-07
打赏
举报
回复
能给个多个线程的c code例子吗?
这样说只是理论呀。
呵呵
充电宝111
2010-01-09
打赏
举报
回复
http://topic.csdn.net/u/20090621/21/741c4c5d-a1ce-4e31-936f-f8af39665390.html
unbutun
2010-01-09
打赏
举报
回复
能给个简单例子吗?
unbutun
2010-01-09
打赏
举报
回复
能给个多个线程的c code例子吗?
这样说只是理论呀。
呵呵
unbutun
2009-12-26
打赏
举报
回复
[Quote=引用 7 楼 rshu 的回复:]
wait_for_completion,可以多次锁定,并且等到每个调用者都complete后才会返回;
wait_event_interruptible,只要wake_up_process就返回;
[/Quote]
能给个简单例子吗?
rshu
2009-12-26
打赏
举报
回复
wait_for_completion,可以多次锁定,并且等到每个调用者都complete后才会返回;
wait_event_interruptible,只要wake_up_process就返回;
unbutun
2009-12-26
打赏
举报
回复
[Quote=引用 8 楼 unbutun 的回复:]
引用 7 楼 rshu 的回复:
wait_for_completion,可以多次锁定,并且等到每个调用者都complete后才会返回;
wait_event_interruptible,只要wake_up_process就返回;
能给个简单例子吗?
[/Quote]
能给个简单例子吗?
windriver3
2009-12-26
打赏
举报
回复
一对多,一对一
cuijie_cn
2009-12-14
打赏
举报
回复
不知道,顺便学习一下
unbutun
2009-12-12
打赏
举报
回复
[Quote=引用 4 楼 unbutun 的回复:]
引用 3 楼 deep_pro 的回复:
wait_for_completion 把当前进程置为 TASK_UNINTERRUPTIBLE
wait_event_interruptible 把当前进程置为TASK_INTERRUPTIBLE
当然这个也很表面
不错,wait_for_completion和wait_event有什么区别呢?completion这个东西和event这组有什么区别呢?我看了下,底层都差不多呀。
[/Quote]
up
unbutun
2009-12-09
打赏
举报
回复
[Quote=引用 3 楼 deep_pro 的回复:]
wait_for_completion 把当前进程置为 TASK_UNINTERRUPTIBLE
wait_event_interruptible 把当前进程置为TASK_INTERRUPTIBLE
当然这个也很表面
[/Quote]
不错,wait_for_completion和wait_event有什么区别呢?completion这个东西和event这组有什么区别呢?我看了下,底层都差不多呀。
deep_pro
2009-12-09
打赏
举报
回复
wait_for_completion 把当前进程置为 TASK_UNINTERRUPTIBLE
wait_event_interruptible 把当前进程置为TASK_INTERRUPTIBLE
当然这个也很表面
Wenxy1
2009-12-09
打赏
举报
回复
如果你使用 wait_event, 你的进程被置为不可中断地睡眠, 如同我们之前已经提到的, 它常常不是你所要的. 首选的选择是 wait_event_interruptible, 它可能被信号中断. 这个版本返回一个你应当检查的整数值; 一个非零值意味着你的睡眠被某些信号打断, 并且你的驱动可能应当返回 -ERESTARTSYS. 最后的版本(wait_event_timeout 和 wait_event_interruptible_timeout)等待一段有限的时间; 在这个时间期间(以嘀哒数表达的, 我们将在第 7 章讨论)超时后, 这个宏返回一个 0 值而不管条件是如何求值的.
参考:《linux 设备区动程序》第三版的第 6 章
rzsheng
2009-12-09
打赏
举报
回复
实际上的东西就去做实验看看了。
TASK_KILLABLE:Linux 中的新进程状态
本文介绍 Linux Kernel 2.6.25 中引入的 TASK_KILLABLE 进程状态,以及与 TASK_UN
INTERRUPT
IBLE
和 TASK_
INTERRUPT
IBLE
的
区别
。同时,文中详细阐述了内核中的新睡眠状态如何工作,包括与旧状态的转换,以及在内核 2.6.26 版本中的具体实现。此外,文章还讨论了新状态 TASK_KILLABLE 在内核 API 中的应用,如
wait
_
event
_killable、schedule_timeout_killable、
wait
_for_
com
p
let
ion
_killable 和 mutex_lock_killable 函数,以及 NFS 客户机代码中的变化。
wait
_
event
与
wait
_
event
_
interrupt
ible
的
区别
本文深入探讨了Linux系统中
wait
_
event
_
interrupt
ible
与
wait
_
event
、wake_up与wake_up_
interrupt
的
区别
,解析了TASK_
INTERRUPT
IBLE
与TASK_UN
INTERRUPT
IBLE
两种等待状态的特点,以及
com
p
let
ion
与
wait
_for_
event
在进程同步中的作用。
嵌入式Linux驱动笔记(三十)------
wait
_
event
与
wait
_
event
_
interrupt
ible
的
区别
本文探讨了Linux中
wait
_
event
_
interrupt
ible
与
wait
_
event
的
区别
,详细解释了TASK_
INTERRUPT
IBLE
与TASK_UN
INTERRUPT
IBLE
两种等待状态的特点,以及它们如何影响进程的调度与唤醒。同时,对比了
com
p
let
ion
机制与
wait
_for_
event
在进程间同步中的应用。
wait
_
event
_
interrupt
ible
wake_up_
interrupt
ible
小例子
本文介绍了一个简单的Linux字符设备模块实现,该模块通过使用
wait
_queue_head_t进行进程间同步,允许一个进程等待另一个进程修改全局变量并唤醒等待进程。此外,还对比了其与
com
p
let
ion
机制的相似之处。
解析Linux内核的同步与互斥机制(七)
本文详细介绍了Linux内核中手工休眠的具体步骤及易错点,并提供了简化这一过程的内核函数
wait
_
event
_
interrupt
ible
_exclusive。此外,还讲解了
com
p
let
ion
机制的基本用法及其在模块退出时的应用。
Linux_Kernel
4,469
社区成员
17,458
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章