当发信号通知等待“加入”的pthread时,进程终止

时间:2012-04-11 10:37:52

标签: c multithreading join signals

我正在尝试实现一个信号处理程序。 每个pthread都是可连接的,并且在使用sigprocmask的所有信号时被阻止。

当我使用

从另一个线程向线程发送信号时,会出现问题
pthread_kill(_threads[threadIndex], SIGHALT);

如果被调用的pthread在发送信号时正在等待pthread_join,则整个进程将被立即终止。但是,如果线程没有等待连接,它会按预期忽略该信号。知道为什么会发生这种情况以及如何改变它?

谢谢!

1 个答案:

答案 0 :(得分:0)

关于在mutithreaded环境中使用sigprocmask(),请参阅方法手册页的摘录:

  

在多线程进程中未指定使用sigprocmask();   见pthread_sigmask(3)。


我对SIGHALT有点不确定,但假设它是SIGSTOP的同义词,可能会对pthread_kill()的手册页中的以下内容感兴趣:

  

信号处理是整个过程:如果信号处理程序是   安装后,处理程序将在线程线程中调用,但是如果   信号的处理是“停止”,“继续”或“终止”,   这个动作会影响整个过程。