关于线程中信号处理的问题

朽木可雕 2014-11-17 10:42:47
在线程中使用pthread_sigmask来设置mask,使用sigwait来等待信号。
在进程中使用sigprocmask来设置mask,使用sigsuspend来等待信号。

那么问题来了,在APUE上说进程中得信号处理在多线程上不能很好地工作,那么我就在所有程序中使用线程的信号处理不就行了,不管他是多线程的还是单线程的!

那么在本质上这两套函数有什么区别呢?
...全文
192 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
朽木可雕 2014-11-19
  • 打赏
  • 举报
回复
引用 4 楼 erhou134 的回复:
如果两个一起用了,而且设置的不一样,会咋的。。。
在多线程中没有定义sigprocmask的结果,因此使用sigprocmask是不确定的根据不同的系统会有不同的情况。 在单线程中pthread_sigmask和sigprocmask是一样的。
空的 2014-11-18
  • 打赏
  • 举报
回复
如果两个一起用了,而且设置的不一样,会咋的。。。
zhxianbin 2014-11-17
  • 打赏
  • 举报
回复
引用 2 楼 pang68599 的回复:
[quote=引用 1 楼 zhxianbin 的回复:] pthread_sigmask 可以各个线程设置不同的 mask,让不同的线程处理不同的信号。 我觉得你的说法是可行的,但没必要在一个单线程程序中引入 pthread
也就是说pthread_sigmask的开销要比单纯的sigprocmask要大是么?[/quote] 我的意思是需要 pthread 库
朽木可雕 2014-11-17
  • 打赏
  • 举报
回复
引用 1 楼 zhxianbin 的回复:
pthread_sigmask 可以各个线程设置不同的 mask,让不同的线程处理不同的信号。 我觉得你的说法是可行的,但没必要在一个单线程程序中引入 pthread
也就是说pthread_sigmask的开销要比单纯的sigprocmask要大是么?
zhxianbin 2014-11-17
  • 打赏
  • 举报
回复
pthread_sigmask 可以各个线程设置不同的 mask,让不同的线程处理不同的信号。 我觉得你的说法是可行的,但没必要在一个单线程程序中引入 pthread

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧