在升压(我用1.54.0)我看到POSIX信号等待执行:升压信号灯linux下和EINTR返回代码
inline void semaphore_wait(sem_t *handle)
{
int ret = sem_wait(handle);
if(ret != 0){
throw interprocess_exception(system_error_code());
}
}
手册上的POSIX信号说:
错误
EINTR The call was interrupted by a signal handler; see signal(7).
我是正确的,如果我发送杀死等待的线程提高信号量抛出异常?如果是的话,你如何处理这种情况?
不要发送kill到线程,除非线程被设计为处理它。 – 2015-04-06 09:31:53
@DavidSchwartz在一般情况下,我无法确定它是否为它设计。另外,我可以获得类似SIGPIPE的东西,这在TCP应用程序中很常见,因为当你发送连接到RST的东西时。 – 2015-04-06 09:35:32
如果你不知道线程会对信号做什么,为什么你会发送信号给线程?向线程发送信号的唯一原因是因为您知道该线程在获取该信号时设计要执行的操作,并且您希望这样做。主题*必须*合作。 – 2015-04-06 09:52:33