C 信号到达时线程是否继续执行?

C 信号到达时线程是否继续执行?,c,multithreading,signals,execution,pause,C,Multithreading,Signals,Execution,Pause,我正在用C编写一个多线程程序,其中main()更改一些信号的行为,然后生成更多线程。问题是:其他线程是在信号到达时继续执行,还是在处理信号时暂停并恢复执行 谢谢 当信号到达时,其他线程是否继续执行 在Linux上之所以如此,是因为信号只传递给一个线程。除非信号是SIGSTOP,它停止进程的所有线程。有关更多详细信息,请参阅和(忽略与旧线程实现相关的LinuxThreads信息) 虽然POSIX不要求这样做,所以这些细节是特定于操作系统的。可能重复No,但其他线程不会暂停。但是,即使它们会被暂停,

我正在用C编写一个多线程程序,其中main()更改一些信号的行为,然后生成更多线程。问题是:其他线程是在信号到达时继续执行,还是在处理信号时暂停并恢复执行

谢谢

当信号到达时,其他线程是否继续执行

在Linux上之所以如此,是因为信号只传递给一个线程。除非信号是SIGSTOP,它停止进程的所有线程。有关更多详细信息,请参阅和(忽略与旧线程实现相关的LinuxThreads信息)


虽然POSIX不要求这样做,所以这些细节是特定于操作系统的。

可能重复No,但其他线程不会暂停。但是,即使它们会被暂停,我想这也不会对你有帮助。线程和信号之间的交互没有被C标准定义,所以没有通用的答案。请用您正在使用的操作系统和/或线程标准标记您的问题。我正在使用POSIX线程和Linux 4.4。另外,我不是问如何暂停线程的执行,我是问其他线程是否在信号到达时暂停,因为根据答案,我必须继续编程,做这样或那样的事情。谢谢。如果所有线程都在同一个CPU上运行,那么它们会在信号处理程序运行时停止。如果它们都在不同的CPU上运行,则只有接收信号的线程才能运行信号处理程序。这不是特定于操作系统的,而是POSIX所要求的,POSIX清楚地指定了信号传递如何与线程交互,并且信号处理程序会中断接收信号的线程,而不是进程。@R。。POSIX规范确实规定了信号的生成和传递方式。但是,它没有详细说明向一个线程发送信号如何影响其他执行线程(它不能影响其他线程)-没有这样的要求。@R。。换句话说,它可以在调用信号处理程序时停止所有线程,并且仍然是一个符合POSIX的实现,不是吗?不。我看不出你认为这是从哪里得到的。@MaximeGroushkin:(1)特定线程中的信号传递,(2)要求线程(在相同或不同的进程中)表现得好像它们同时执行,即一方未能取得进展不会明显导致其他方无法取得进展。