关于sigwait()的模棱两可的描述
||
如果没有信号输入
设置在调用时是挂起的,线程应该是
暂停,直到一个或多个成为
待定。集合定义的信号
本应在
调用sigwait()的时间;否则,行为是不确定的。
sigwait()对信号的影响
设置信号的动作是
未指定。
这真是模棱两可,这里的
pending
和block
有什么区别?
关于如何在sigwait
和sigaction
之间进行选择的结论还不清楚:
综上所述,何时需要
代码运行以响应
异步信号通知
线程,sigwait()应该用于
处理信号。 Alterna-
如果实现提供信号量,它们也可以是
用于sigwait()或
从信号处理例程中
先前注册
与sigaction()。
有人可以使ѭ2的理由更合理吗?
没有找到相关结果
已邀请:
2 个回复
功飘
(对于多线程代码)进行设置。 每当发出信号时(显式地通过
或
或通过某种其他机制,例如分段错误提升
),都将根据当前信号掩码检查信号。如果未阻塞信号,则立即采取行动:如果设置了相应的信号处理程序,则将运行默认操作(通常以异常状态退出或忽略它)。如果信号被信号掩码阻止,则信号状态将设置为“未决”,程序将继续执行。 因此,请考虑以下示例程序:
输出:
阀傻
手册页中:
\“ Pending \”和\“ blocked \”并不互斥。 同样在
手册页中:
因此,
用于允许其他代码运行,直到信号挂起为止,而
挂起线程的执行,直到信号挂起但被阻塞为止。