一个《UNIX环境高级编程》中也没有讲清楚的重要问题---线程中的信号
总所周知,每个进程都有自己的未决信号队列msgqueue,未决信号集和信号屏蔽字。
1. 当创建一个线程时,一个线程会继承创建者的信号屏蔽字并且清空它。那么,线程是否拥有自己
的信号队列msgqueue和未决信号集呢?
2. 假设有一个信号SIGABRT,能否使得一个线程接收到它时调用func1(),而另外一个线程接收到它时调用func2()?
3.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自己建一个消息队列,循环处理消息就好了。系统的信号主要是针对进程的,而且感觉对线程来说不可靠。
我就不懂,既然linux线程没有自己的sigqueue,而是使用到创建者的sigqueue上去取信号,那么为什么还要用pthread_pkill来向线程发送信号呢,这有什么意义啊?别的线程不是也可能会到同一个sigqueue取掉啊?