免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: cxchao_cs
打印 上一主题 下一主题

这个问题很难(进程组间通信问题) [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-01-21 16:57 |显示全部楼层

回复 #17 flw2 的帖子

是不是因为这个原因啊。
Linux中线程和他的父进程是共用信号的,因此在程序执行到某个地方的时候如果信号到了就会去执行他的处理函数,处理结束后会把该信号的标志位清零。所以一个进程的信号,在信号到来时只能执行一次该信号的处理函数,具体到楼主的程序,我觉得执行的函数应该是最后一个被注册的线程的处理函数,因为会覆盖前面两个线程的设置。
自己理解的不知对不对^_^

论坛徽章:
0
2 [报告]
发表于 2008-01-22 17:06 |显示全部楼层

回复 #19 cxchao_cs 的帖子

每一个进程都有一个32位的变量来描述他所拥有的信号,每个信号一位,如果信号到来的话就会置该位为1,进程在某个时刻会检查是否有信号到来,有的话就去执行,然后清零该位,等待信号的再次到来。

论坛徽章:
0
3 [报告]
发表于 2008-01-23 22:45 |显示全部楼层

回复 #22 chenhj_wo 的帖子

信号其实可以看作软件层次上对中断的模拟,因此可以按照中断的方式去理解它。我记得看赵炯的“linux0.11内核详解”的时候好像在从内核空间返回用户空间的时候会检测是否有改进程的信号产生,有的话就响应,具体的我也记不太清了。我觉得你这个程序之所以只有一个线程响应了就是因为你只是发送了一个这样的信号。具体的你可以看看有关源码啊。

论坛徽章:
0
4 [报告]
发表于 2008-01-23 22:56 |显示全部楼层
可以参考一下《情景分析》中的724页
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP