社区
Linux_Kernel
帖子详情
linux completion的问题
vv1133
2010-10-13 08:30:28
看《linux设备驱动程序》第5章的时候,书上提到用信号量实现同步并不是很好的方法,而要用completion。completion是一种轻量级机制,允许一个线程告诉另一线程某个工作已经完成。
请问completion比信号量好在哪?什么时候该用信号量,什么时候该用completion?
谢谢
...全文
172
5
打赏
收藏
linux completion的问题
看《linux设备驱动程序》第5章的时候,书上提到用信号量实现同步并不是很好的方法,而要用completion。completion是一种轻量级机制,允许一个线程告诉另一线程某个工作已经完成。 请问completion比信号量好在哪?什么时候该用信号量,什么时候该用completion? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vv1133
2010-10-16
打赏
举报
回复
谢谢各位
maixl
2010-10-14
打赏
举报
回复
completion完成变量一般用在等待线程完成,比如模块创建一个内核线程,在卸载模块时,要等待线程结束了在删除内存,这时候就用wait_for_completion来等待线程完成再往下工作。。。
deep_pro
2010-10-14
打赏
举报
回复
书上写的分明,那是使用信号量来做一种特殊的作用:一个线程等待另一个线程完成
这个可以使用信号量来做,但是不合适,最好使用完成接口去做
信号量最适合做临界区保护,在没有完成接口前的内核版本里,也可用于做完成接口的工作
somehc240
2010-10-14
打赏
举报
回复
如果遇到一个资源是双方或多方都需要的,即临界区,那么选信号量,如果是一个线程依赖另一个线程,用completion, 而且completion基本上都可以用sem实现,可是completion不可以完成sem的所有功能
somehc240
2010-10-14
打赏
举报
回复
信号量是双方的,completion是单方的,互斥信号量是2个线程的共同资源,是双向依赖关系,completion是单向依赖关系。如果把completion换成sem的话,completion的一方的线程会发现该sem 几乎总是可用的,会造成资源的浪费。
Linux
自动tab 补充插件 bash-
com
p
let
ion
-2.1.tar
Linux
自动tab 补充插件 bash-
com
p
let
ion
-2.1.tar 比如service httpd restart 按TAB键 可以自动填充
osd_client.rar_
com
p
let
ion
com
p
let
ion
callback for async writepages for
Linux
v2.13.6.
qib_cq.rar_
com
p
let
ion
add a new entry to the
com
p
let
ion
queue for
Linux
v2.13.6.
linux
-2.4.0内核源代码
在内核代码 2.6.15.5中/kernel/fork.c第1255-1261中有... //定义struct
com
p
let
ion
类型的变量 vfork; 关于struct
com
p
let
ion
的定义如下: struct
com
p
let
ion
{ unsigned int done; wait_queue_head_t wait;
linux
4.0-camera-uvc.patch
解决camera运行出现uvcvideo: Non-zero status (-71) in video
com
p
let
ion
handler.
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章