免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4139 | 回复: 7
打印 上一主题 下一主题

多线程 信号 信号掩码的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-31 10:40 |只看该作者 |倒序浏览
如果一个进程A向另外一个进程B发送多个信号S,如果进程B中阻塞了这个信号S,当进程B解除对信号S的阻塞时,会受到多个信号S吗

如果进程B是多线程的,进程A想进程B发送信号时,进程B中所有的线程都会收到信号还是只有随机的一个收到信号呢

另外有关于信号处理的转么的书吗

论坛徽章:
0
2 [报告]
发表于 2009-07-31 10:46 |只看该作者
如果一个进程A向另外一个进程B发送多个信号S,如果进程B中阻塞了这个信号S,当进程B解除对信号S的阻塞时,会受到多个信号S吗
这要看进程AB之间的协议 ,是UDP,还是TCP

评分

参与人数 1可用积分 -2 收起 理由
JohnBull -2 答非所问,严重误导

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2009-07-31 10:53 |只看该作者

回复 #2 aaaaa5aa 的帖子

signal信号处理和网络没有关系吧,信号是只能发往同一台机器的其他进程的

论坛徽章:
0
4 [报告]
发表于 2009-07-31 12:45 |只看该作者
如果一个进程A向另外一个进程B发送多个信号S,如果进程B中阻塞了这个信号S,当进程B解除对信号S的阻塞时,会受到多个信号S吗
  1. 这个可以看APUE或者man 7 signal,各UNIX之间有些差异吧
  2. Linux支持POSIX可靠信号和POSIX 实时信号
  3. 看man 李一句话:
  4. Multiple instances of real-time signals can be queued.  
  5. By contrast, if multiple instances  of  a  standard  signal are delivered while that signal is currently blocked, then only one instance is queued.
  6. 所以标准信号只会收到一个,因为多个同一信号只用一个,其余被丢弃了。实时信号不一样,会全部投递。
复制代码



如果进程B是多线程的,进程A想进程B发送信号时,进程B中所有的线程都会收到信号还是只有随机的一个收到信号呢

  1. 每个线程有它自己独立的信号掩码
  2. 每个线程通过调用 pthread_sigmask() 设置本线程的信号掩码(除了一些不能屏蔽的)
  3. 而且当一个线程调用 pthread_create() 创建新的线程时,此线程的信号掩码会被新创建的线程继承。

  4. 向一个进程发信号,所有线程都会收到的呵呵。


复制代码

评分

参与人数 1可用积分 +2 收起 理由
JohnBull + 2 我很赞同

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2009-07-31 13:03 |只看该作者
类unix对于问题2好象是信号是以pid为对象发的,也就是线程有进程标志符,能独立接受信号,而且还有向进程组发信号,这样"多线程"都能接受到.

问题1在APUE上讲得比较详细.是否受到多个信号的影响,也就是时候存在信号排队的问题,书上说大多数系统未实现信号排队.

论坛徽章:
0
6 [报告]
发表于 2009-07-31 15:15 |只看该作者

回复 #5 epegasus 的帖子

posix 标准 realtime信号时可以queue的

problem 2:
只有一个线程能处理这个信号

论坛徽章:
0
7 [报告]
发表于 2010-02-25 11:08 |只看该作者
同意楼上,实时信号是可以排队的,同步信号是发给产生信号的线程,异步信号就不一定了

论坛徽章:
0
8 [报告]
发表于 2010-02-25 14:21 |只看该作者
线程的信号问题在《POSIX多线程程序设计》这本书里的6.6节"信号"里讲了一些,不过我还没看只初略的浏览了一下,这本在论坛上好象有下载。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP