社区
Linux_Kernel
帖子详情
wait_for_completion 和wait_event_interruptible 区别
unbutun
2009-12-09 04:51:05
看了一下wait_for_completion 和wait_event_interruptible
这两个除了建立用不同的函数之外,功能是一样的,都可以等另外一边的动作完成,在执行这边,而且源码里两者
都包含了schedule调度
那么completion 和 waitqueue有什么区别呢,我是指实际上的东西,请不要把书本的拿过来,谢谢了。
...全文
2230
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
打赏
举报
回复
实际上的东西就去做实验看看了。
wait
_
event
与
wait
_
event
_
interrupt
ible
的
区别
wake_up与wake_up_
interrupt
有什么
区别
?
wait
_
event
与
wait
_
event
_
interrupt
ible
有什么
区别
? 最近在项目,被报了一个log,然后就思考到了这个问题:
wait
_
event
_
interrupt
ible
将当前进程的状态设置成TASK_
INTERRUPT
IBLE
。
wait
_
event
将当前进程的状态设置成TASK_UN
INTERRUPT
IBLE
。...
4: linux 信号量在
wait
_
event
_
interrupt
ible
_timeout 调用返回 -ERESTARTSYS的问题
问题概述: 在做编解码开始编码时,app通过system call 调用内核态,内核态代码如下。 rval =
wait
_
event
_
interrupt
ible
_timeout(
wait
_queue, condit
ion
, 5s) ; printk( “ hello world, rval = %d\n”, rval ); rval返回0表示时间片流完,condit
ion
还没有满足 rval返回>0 表示时间片没流完,condit
ion
满足了,rval值即为剩余的时间片值(单位ms) 但是我们在
wait
_
event
_
interrupt
ible
返回-ERESTARTSYS(-512)
最近做一个驱动,在等待FPGA结果的时候调用
wait
_
event
_
interrupt
ible
,期望能进入睡眠状态,并且在需要的时候可以使用ctrl+c杀死进程,但是在使用过程中发现
wait
_
event
_
interrupt
ible
一直返回-ERESTARTSYS(-512)值,究其原因是因为在
wait
_
event
_
interrupt
ible
里会调用signal_pending(current)检查当...
嵌入式Linux驱动笔记(三十)------
wait
_
event
与
wait
_
event
_
interrupt
ible
的
区别
你好!这里是风筝的博客, 欢迎和我一起交流。 wake_up与wake_up_
interrupt
有什么
区别
?
wait
_
event
与
wait
_
event
_
interrupt
ible
有什么
区别
? 最近在项目,被报了一个log,然后就思考到了这个问题:
wait
_
event
_
interrupt
ible
将 当前进程的状态设置成TASK_
INTERRUPT
IBLE
。
wait
_
event
将 当前进程的状...
wait
_
event
_
interrupt
ible
()学习笔记
原链接 http://blog.chinaunix.net/uid-29054367-id-3809059.html
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章