当信号到达时线程是否继续执行?
Do threads continue executing when a signal arrives?
我正在用 C 语言编写一个多线程程序,其中 main() 会更改某些信号的行为,然后生成更多线程。问题是:其他线程是在信号到达时继续执行,还是在处理完信号后暂停并恢复执行?
谢谢
do the other threads continue executing when a signal arrives
在 Linux 他们这样做是因为信号只传递给一个线程。除非信号是 SIGSTOP
,它会停止一个进程的所有线程。有关更多详细信息,请参阅 man signal(7)
and man pthreads(7)
(忽略与旧线程实现相关的 Linux 线程信息)。
虽然 POSIX 没有要求,所以这些细节是 OS 具体的。
我正在用 C 语言编写一个多线程程序,其中 main() 会更改某些信号的行为,然后生成更多线程。问题是:其他线程是在信号到达时继续执行,还是在处理完信号后暂停并恢复执行?
谢谢
do the other threads continue executing when a signal arrives
在 Linux 他们这样做是因为信号只传递给一个线程。除非信号是 SIGSTOP
,它会停止一个进程的所有线程。有关更多详细信息,请参阅 man signal(7)
and man pthreads(7)
(忽略与旧线程实现相关的 Linux 线程信息)。
虽然 POSIX 没有要求,所以这些细节是 OS 具体的。